不会罢?你把Word文档当成普通二进制文件还是按照BLOB类型来保存阿,应该没有问题的。是不是这里
       filestream.LoadFromFile(opendialog1.FileName);OpenDialog1里只能选择Tet文件?

解决方案 »

  1.   

    代码如下:
    var
      MemSize:Integer;
      Buffer:PChar;
      MyFile:TFileStream;
      Stream:TBlobStream;
      Filename:String;
    begin
       MyFile := TFileStream.Create(str_FileName,fmOpenRead);
       with tbl_name do
       begin
          Stream := TBlobStream.Create(Fieldbyname(field_name)as TBlobField,bmWrite);
          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;
        end;
      

  2.   

    下面的文本、图片都支持
    procedure TForm_ProjectDoc.BB_ADDClick(Sender: TObject);
    var
    dName:string;
       fStream:TFileStream;
       bStream:TStream;
    begin
    if OD_selDoc.Execute then
       begin
        T_ProjectDoc.Open;
        dName:=ExtractFileName(OD_SelDoc.filename);
          try
           FStream:=TFileStream.Create(Od_SelDoc.filename,fmOpenRead);
             T_projectDoc.append;
             T_ProjectDoc.FieldByName('P_Id').asinteger:=CurPrjId;
             T_ProjectDoc.FieldByName('Doc_name').asString:=Dname;
           try
    BStream := T_ProjectDoc.CreateBlobStream(T_ProjectDocDoc_Value, bmReadWrite);
                try
                 Bstream.CopyFrom(fStream,Fstream.Size);
                   T_projectDoc.Post;
                finally
                 T_ProjectDoc.Cancel;
       UpdateView;
                end;
             finally
              Bstream.Free;
             end;
          finally
           Fstream.Free;
          end;
        T_ProjectDoc.close;
       end;
    end;procedure TForm_ProjectDoc.BB_ViewClick(Sender: TObject);
    var
    dname1,dName:string;
       fStream:TFileStream;
       bStream:TStream;
    begin
    if LB_Doc.ItemIndex=-1 then
        exit;
    T_ProjectdocRead.open;
       DName1:=LB_Doc.Items[LB_Doc.ItemIndex];
    if T_ProjectDocRead.Locate('p_id;Doc_Name',vararrayof([CurPrjId,Dname1]),[]) then
       begin
       DName:=extractFilepath(Application.exename)+'temp\'+LB_Doc.Items[LB_Doc.ItemIndex];
        if FileExists(DName) then
           deleteFile(DName);
          try
           FStream:=TFileStream.Create(DName,fmCreate);
           try
             bStream:=T_ProjectDocread.CreateBlobStream(T_ProjectDocReadDoc_Value, bmRead);
           Fstream.copyfrom(BStream,Bstream.size);
             finally
           Bstream.Free;
           end;
          finally
           Fstream.Free;
          end;
          if TempDocList.IndexOf(Dname1)=-1 then
           TempDocList.Add(Dname1);
          if shellExecute(handle,'open',pchar(Dname),nil,nil,sw_shownormal)=SE_ERR_NOASSOC then
           showmessage('该类型文件没有指定关联程序,不能打开!');
       end;
    T_ProjectdocRead.close;
    end;
      

  3.   

    Table1.Close;      Table1.TableName := 'tablename';
    Table1.Open;       Table1.Append;
    (Table1.FieldByName('text') as TBlobField).LoadFromFile(ReadFullName);
    Table1.Post;