比如我将C:\document\a.doc上传到数据库,然后下载并保存成c:\tmp\1.doc文件,但当我通过CreateOLEObject('Word.Application')打开时,同时打开了c:\tmp\1.doc和C:\document\a.doc。但是我并不需要打开C:\document\a.doc。各位给点办法!
代码如下:
保存文件到数据库:
  MS := TMemoryStream.Create;
  MS.LoadFromFile(Edit6.Text);
  ssql:= 'select id,doc from table1 where id =***' ;
  FSQLDataSet.CommandText := ssql;
  FSQLDataSet.Open;  FCDS.Close;
  FCDS.Open;
  FCDS.Edit;
  TBlobField(FCDS.FieldByName('doc')).LoadFromStream(MS);
  FCDS.Post;
  FCDS.ApplyUpdates(0);
  FCDS.Close;
  FSQLDataSet.Close;
  MS.Free;打开文件:  docApp := CreateOLEObject('Word.Application');
  docApp.Visible := True;
  docApp.Documents.Open('c:\tmp\1.doc');  //每次当上传一个文件后,再执行该语句的时候都会打开两个文件。但如果不执行保存文件到数据库操作,就不会发生错误。
  docApp := Unassigned;
另外还有一个问题就是不能上传大一点的文件,错误信息是MySQL has gone away,见
http://expert.csdn.net/Expert/topic/1874/1874503.xml?temp=3.652591E-02

解决方案 »

  1.   

    第一个可能跟 MS.LoadFromFile(Edit6.Text)有关,具体情况不清楚。第二问看看database控件中是否有blob size属性没有修改
      

  2.   

    感谢大家,第一个问题已经解决了,原因是我在显示的时候使用了TdxHyperLinkEdit控件来显示上传的文件名,它会缺省进行链接,当我选择一个文件上传的时候就更改了当前路径,所以每次点击都会链接我上传的文件。第二个问题还没有解决,我使用的dbexpress,我已经将SQLQuery的maxBlobSize的属性设为-1还是不行,快快帮忙呀!200分呀!!!!