在一个dbedit对应数据库中的img字段中
怎样通过双击事件如果字段是空的就从本地机器里添加一个文件(如.doc,.xls等)
如果不为空,直接显示,并能编辑和保存。
能给出详细代码和说明吗?
谢谢了!

解决方案 »

  1.   

    一般都是用流。第一个页面就有相似的问题啊 
    http://community.csdn.net/Expert/topic/3645/3645081.xml?temp=.3210718
    -_-#
      

  2.   

    对IMAGE字段,一般是用流解决,可以参考一下下面这个例子,我是把WORD文件保存在数据库,可以取出来显示,编辑
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ADODataSet1.ConnectionString:='Provider=SQLOLEDB.1;Password=zdq;Persist Security Info=True;User ID=sa;Initial Catalog=test';
    end;procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
     ADODataSet1.Close;
     ADODataSet1.CommandText:='select * from test where id='+edit2.Text;
     ADODataSet1.Open;
    (ADODataSet1.FieldByName('image') AS TBlobField).SaveToFile('d:\aaa.doc');
    end;procedure TForm1.BitBtn3Click(Sender: TObject);
    var  filepath:string;
    begin
    ADODataSet2.Close;
    ADODataSet2.Open;
    ADODataSet2.Append;
    ADODataSet2.FieldByName('id').Value:=Edit1.Text;
    opendialog1.Execute;
    filepath:=opendialog1.FileName;
    OleContainer1.CreateLinkToFile(Filepath,false);//从指定目录中读出文档
     TBlobField(ADODataSet2.fieldbyname('image')).LoadFromFile(filepath);//将文档写入数据库
     ADODataSet2.Post;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var  filepath:string;
    begin
    ADODataSet2.Close;
    ADODataSet2.Open;
    ADODataSet2.First;
    while (Not ADODataSet2.Eof) and (Not ADODataSet2.IsEmpty) do begin
     if ADODataSet2.FieldValues['ID']=Edit3.Text then begin //if 2
     ADODataSet2.edit;
    opendialog1.Execute;
    filepath:=opendialog1.FileName;
    OleContainer1.CreateLinkToFile(Filepath,false);//从指定目录中读出文档
    TBlobField(ADODataSet2.fieldbyname('image')).LoadFromFile(filepath);//将文档写入数据库
     ADODataSet2.Post;
     end;
     ADODataSet2.Next;
    end;
    end;end.