各位大虾!help me!
我快被折磨死了
我用oracle数据库对word文档的读取,修改操作
例如:
  从本地硬盘上读取word文档,保存到数据库中,
  从数据库中读取word文档,修改后,保存到数据库中救命啊!!!
 
源代码发一份  [email protected]

解决方案 »

  1.   

    blobfield可以存取。
    server页的组件可以控制word
      

  2.   

    文件上传:
    var
     i:integer;
     temS:TMemoryStream;
     temB:TStringStream;
     QuStr:TQuery;
    begin
     if FileExists(format('%s'+'zqglls.doc',[MTemp.TempDF])) then //MTemp.TempDF为工作目录
      begin
       OCWord.CreateObjectFromFile(format('%s'+'zqglls.doc',[MTemp.TempDF]),false);
       temS:=TMemoryStream.Create;
       temS.LoadFromFile(format('%s'+'zqglls.doc',[MTemp.TempDF]));//zqglls.doc为将要上传的文件
       temS.Seek(0, soFromBeginning);
       TemB:=TStringStream.Create('');
       temS.SaveToStream(temB);
       TemB.Position:=0;
       temS.Free;
       QuStr:=TQuery.Create(self);
       with QuStr do
        begin
         DataBaseName:='zqgle';
         SQL.Add('update dbo.TZLSYG set TZLSYG=:image where DWDM='''+MTemp.UC+''';');//MTemp.UC指定上传点
         Parambyname('Image').AsBlob:=Temb.DataString;
         ExecSQL;
         free;
        end;
       temB.Free;
       showmessage('上传完成');
      end;
      end
      else
       showmessage('没有文件可供上传');
    end;
    此代码上传30M巨型文件测试成功.
      

  3.   

    文件读取比较简单,直接使用
    TBlobField(FieldByName('TZLSYG')).SaveToFile(format('%s'+'zqglls.doc',[MTemp.TempDF]));//MTemp.TempDF为工作目录
    但是请记住使用TTable来处理,使用TQuery有8K限制,不适合处理大字段。
      

  4.   

    谁说有8k限制的,设置blobsize;
      

  5.   

    To:Firec(Firec)
    多谢大侠的指点,我有一点的补充问题是能浏览、修改word文件,修改后的文件提供
    保存到数据库的功能再给小弟一点提示
    [email protected]
      

  6.   

    我用是OleContainer显示word文件
    显示文件:(从磁盘中打开word文件)
      OleContainer.CreateObjectFromFile(OpenDialog1.FileName,True);
      OleContainer1.DoVerb(1); 
    但是在createobjectFromFile时,有时候word提示安装什么转换器,不能正常的打开文件。
    保存文件:
      var
        OleStream : TMemoryStream;
       OleStream := TMemoryStream.Create;
       OleContainer1.SaveToStream(OleStream);
       OleStream.Position := 0; //回零点
       ADOTable1.Append;
      (ADOTable1.FieldByName('FiledName') as TBlobField).LoadFromStream(OleStream);
        ADOTable1.Post ;
    从数据库中提取文件
        OleStream := TMemoryStream.Create;
       (ADOQuery1.FieldByName('FiledName') as TBlobField).SaveToStream(OleStream);
         OleStream.Position := 0;
         OleContainer1.LoadFromStream(OleStream);
         OleContainer1.DoVerb(1);  各位大虾看看有没有错误的地方啊?
    帮助我完善一下!!!
    多谢了