你的数据库中相应的字段应该是Image字段就可以存放Word文档了。Image字段是Blob字段,所以存取Image字段时你要使用TBlobStream类或者相关的方法来存取,你可以看一下帮助中是如何说的。

解决方案 »

  1.   

    我看过帮助,太复杂了,能具体一点吗,比如我选定了一个1.DOC的文件,如何存入呢?
      

  2.   

    将字段类型设为text,可以用loadfromfile()的方法实现。
      

  3.   

    fieldbyname('text').asstring:=loadfromfile('1.doc');
      

  4.   

    不能用text类型,应该用Image类型。
    用asstring也比较危险,在处理大型数据(>几十M)时,最后一个字节会变成0。
    别用string, 用stream吧。
      

  5.   

    设置字段类型为ntext,利用字段编辑器将字段加入,下面的语句就能将文件存放到对应的字段中:
    adoquery1text.LoadFromFile('c:\windows\desktop\1.doc');
      

  6.   

    我是用SQL语句提交的,后三位的方法都不行,我碰见的情况如下:
    例: dataunit.DataModule1.query3.SQL.Add('insert 文件数据表 (文件名称,
    文件内容,建立时间,建立用户代码,建立用户姓名,备注) values
     (:文件名称,:文件内容,:建立时间,:建立用户代码,:建立用户姓名,:备注)');
    .
    .
    .
    dataunit.DataModule1.Query3.Parambyname('文件名称').asstring:=edit1.text;
    dataunit.DataModule1.Query3.FieldByName('文件内容').asstring:=?
    其中'?'即为提交数据。按如何写语句呢?
     
      

  7.   

    procedure TForm1.Save;
    var
        MemSize: Integer;
        Buffer: PChar;
        MyFile: TFileStream;
        Stream: TBlobStream;
    begin
      MyFile:=TFileStream.Create('1.doc', fmOpenRead);
      with table1 do
       begin
        Open;
        Edit;
        Stream := TBlobStream.Create(FieldByName(‘Doc') as TBlo
    bField, bmWrite)
        {‘Doc'为BLOB字段名}
        MemSize := MyFile.Size;
        Inc(MemSize);
        Buffer := AllocMem(MemSize);
        try
         Stream.Seek(0, soFromBeginning);  
         MyFile.Read(Buffer^,MemSize);
         Stream.Write(Buffer^,MemSize);
        finally
         MyFile.Free;
         Stream.Free;
        end;
        try
         Post;
        except
         on E: EDatabaseError do
          if HandelException(E)<>0 then exit
          else
           raise;
        end;
      end;
    end;
      

  8.   

    zgb:你的方法好像是从数据库里把字段读出来,而我是要把数据存进数据库