with ClientDataSet do
begin
  Append;
  TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
  ApplyUpdates(0);
end;

解决方案 »

  1.   

    TBlobField(FieldByName('fieldname').AsString).LoadFromFile(filename);
      

  2.   

    这是一个使用ADO的例子,不知道是否对你合适?
    可以处理任何类型的文件
    procedure SavePicture
    var
         FileStream: TFileStream;
         BlobStream:TStream;
         i:integer;
    begin
        if OpenDialog1.Execute then
        begin
            with OpenDialog1.Files do
            begin
                 for I := 0 to Count - 1 do
                 begin
                    FileStream := TFileStream.Create(Strings[I], fmOpenRead);
                    AdoPicD.Append;//数据表
                    BlobStream := AdoPicD.CreateBlobStream(字段对象, bmReadWrite);
                    BlobStream.Seek(0,soFromBeginning);
                    BlobStream.CopyFrom(FileStream,FileStream.size);                FileStream.Free;
                    BlobStream.Free;
                    ADOPicD.Post;
        
                 end;        end;
       end;
    end;
      

  3.   

    不会吧,首先改造一下你的程序:
    procedure TfrmMain.nSendReferClick(Sender: TObject);
    var
      mm:TMemoryStream;
    begin
      try
        mm:=TMemoryStream.Create;
        try
          mm.LoadFromFile(openDialog1.FileName);
          mm.Position:=0;
          with clientDataSet1 do
          begin
            Append;
            TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
            ApplyUpdates(0);
          end;
          messagebox(handle,'报请成功!','示',MB_OK+MB_ICONINFORMATION);
        finally
          mm.Free;
        end;
      except
        raise;
      end;
    end;
    还有Blob的字段确实在ADO连接时有问题,因为Blob是Oracle8新支持的,所以相关的ADO引擎可能还跟不上,如果用老的long raw就没问题。
      

  4.   

    呵呵,看看我贴上来的体会。
    http://www.csdn.net/expert/topic/765/765494.xml?temp=.8706934
      

  5.   

    誰有空看看我的問題嗎??
    http://www.csdn.net/expert/topic/768/768242.xml?temp=.4995539to   nylp (混子刘)  :
      您的問題解決了嗎??
      

  6.   

    你的sql语句不应该写在客户端,你可以把文件作为流用Clientdataset1.DataRequest发送到服务器端,然后在服务器端用insert语句进行保存,这样才能真正发挥三层结构的优势
      

  7.   

    谢谢各位道友!万分感谢!!!
    我已经搞定。
    原来我在中间层用的是adoQuery,无论怎么搞都搞不定。
    现在只需将adoQuery换为adoTable就可以了。(我一向反对用这种呆板的东西的。)
    相关代码:
    with clientDataSet1 do
    begin
       Append;
       TBlobField(FieldByName('fieldname')).LoadFromFile(filename);
       ApplyUpdates(0);
    end;
      

  8.   

    您的程序是3層的.結構是這樣的吧??
       server端;  ADOConnection+adoTable+DataSetProvider
       client端;  SocketConnection+ClientDataSet組件的屬性怎麼設置呀?? 讓這部分代碼可以直接用到字段'fieldname'速盼回複!!!!!!
      

  9.   

    請看
    http://www.csdn.net/expert/topic/768/768242.xml?temp=.9024927adoTable與表名'tab_file'關聯,其他組件的屬性都不設的話.
    執行到   ApplyUpdates(0);
    在事件
    procedure TDM2.CDS_FileContReconcileError(DataSet: TClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    begin
              ShowMessage(E.Message+' zfzzfz  2 ');
    end;
    我的程序報錯'提供不一致或不完全的資訊導致參數物件不適當被拒.'
    怎麼解決???