WORD文件写入MS SQL数据库,用loadfromfile全是乱码,怎么办?数据库字段是image.

解决方案 »

  1.   

    存入时用
    var
      MS: TMemoryStream;
    begin
      MS := TMemoryStream.Create;
      OleContainer1.SaveToStream(MS);
       adoquery1.Edit;
        TBlobField(adoquery1.FieldByName('word')).LoadFromStream(MS);
        adoquery1.Post;打开时用:
      TBlobField(adoquery1.FieldByName('word')).SaveToFile(ExtractFilePath(application.ExeName)+'temp.doc');
    OleContainer1.LoadFromFile(ExtractFilePath(application.ExeName)+'temp.doc');
        OleContainer1.DoVerb(1);
        OleContainer1.Run;
    这样做,虽有点麻烦,但到现在也没有出现什么错误。(我是这样做的,希望能帮你)
      

  2.   

    : cyf_delphi(风一样) 你好:
    我用你的办法写入,没法存盘,提示:“多步操作产生错误,请检查每一步的状态值。”请帮忙。
      

  3.   

    用流读写
    //测试通过
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MfileStream : Tfilestream;
      MStringStream : TStringStream;
      XQXXB : Tadoquery;
    begin
      If OpenPictureDialog1.Execute Then
      begin
        try
          XQXXB:=Tadoquery.Create(self);
          XQXXB.Connection:=ADOConnection1;
          MfileStream.Create(OpenPictureDialog1.FileName,fmOpenRead);
          MStringStream:=TStringStream.Create('');
          MStringStream.CopyFrom(MfileStream,MfileStream.Size);
          XQXXB.SQL.Add('Insert into XQXXB ( 照片 ) values (:zhaopian)');
          XQXXB.Parameters.ParamByName('zhaopian').LoadFromStream(MStringStream,ftBlob);
          XQXXB.ExecSQL;
        finally
          freeandnil(MfileStream);
          freeandnil(XQXXB);
          freeandnil(MStringStream);
        end;
      end;
    end;