报错: 缺少所需的空白区   ms:= TMemoryStream.Create;
  SOAPAttach.SaveToStream(ms);
  TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms);自己感觉应该是 TMemoryStream.Create 创建的时候没有不足。
这个是什么原因?

解决方案 »

  1.   


      ms:= TMemoryStream.Create; 
      try
        MS.postion:=0;
        SOAPAttach.SaveToStream(ms); 
        TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms); 
      finally
        ms.free;
      end;
      

  2.   

      try
        ms:= TMemoryStream.Create; 
        MS.postion:=0;
        SOAPAttach.SaveToStream(ms); 
        rs.Append;
        TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms); 
        rs.Post;
      finally
        ms.free;
      end;
      

  3.   

    try 
        ms:= TMemoryStream.Create;  
        SOAPAttach.SaveToStream(ms); 
        MS.seek(0,sobeginning);    rs.Append; 
        TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms); 
        rs.Post; 
      finally 
        ms.free; 
      end; 
      

  4.   

              
    这是原来的
      rs.Open;
                rs.Append;
                rs.FieldByName('Datetime').AsDateTime:= now;
                rs.FieldByName('Customer').AsString:= Customer;
                rs.FieldByName('FileName').AsString:= FName;
                rs.FieldByName('FileType').AsString:= FType;
                rs.FieldByName('Status').AsString:= '1';            ms:= TMemoryStream.Create;
                SOAPAttach.SaveToStream(ms);
                TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms);            rs.Post;
                rs.Free;       //释放
                ms.Free;
      

  5.   

              
    这是原来的
      rs.Open;
                rs.Append;
                rs.FieldByName('Datetime').AsDateTime:= now;
                rs.FieldByName('Customer').AsString:= Customer;
                rs.FieldByName('FileName').AsString:= FName;
                rs.FieldByName('FileType').AsString:= FType;
                rs.FieldByName('Status').AsString:= '1';            ms:= TMemoryStream.Create;
                SOAPAttach.SaveToStream(ms);
                TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms);            rs.Post;
                rs.Free;       //释放
                ms.Free;
      

  6.   

               ms.Free;
               rs.Free;      //释放 
                
      

  7.   

    SOAPAttach.SaveToStream(ms);
    这句执行之后MS的指针会指向末尾,所以当下一句TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms); 执行的时候会出错,需要这样SOAPAttach.SaveToStream(ms); 
    MS.postion:=0;
    TBlobField(rs.FieldByName('FileData')).LoadFromStream(ms); 
      

  8.   

    问题查出来了。
     SoapAttach: TSOAPAttachment
    应该是SoapAttach 的远程传输的时间设置问题吧
    只要过了30秒就会报错。谁知道这个时间是那里怎么设置的???