|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2004/3/7 10:41:14 |
标题: |
|
加入我的收藏 |
楼主: |
一个表中建有多个BLOB字段(主要用于存储WORD),如何实现按一个保存键使得所有WORD存贮在对应的字段(响应的WORD对应相应的字段)
procedure TForm5.SpeedButton1Click(Sender: TObject); var MemSize, MemSize1: Integer; Buffer,Buffer1: PChar; MyFile,MyFile1: TFileStream; Stream,stream1: TBlobStream; Doc_ole:ToleContainer; test,test1:string; begin opendialog1.Filter:='WORD文档(*.DOC)|*.DOC';{从对话窗选择文件} MyFile:=TFileStream.Create('C:\My Documents\何科奭\重要文档\宁波市鄞州区新城区拆迁挡案资料管理\拆迁档案\拆迁调产结算清单.doc',fmOpenRead); MyFile1:=TFileStream.Create('C:\My Documents\何科奭\重要文档\宁波市鄞州区新城区拆迁挡案资料管理\拆迁档案\宁波市鄞州区新城区房屋拆迁协议书.doc',fmOpenRead); MyFile.Seek(0, soFromBeginning); MyFile1.Seek(0, soFromBeginning); with table1 do {‘table1’为含BLOB字段的表名} begin Edit; Stream := TBlobStream.Create(FieldByName('拆迁调产协议书')as TBlobField, bmWrite); stream1:= TBlobStream.Create(FieldByName('拆迁调产结算清单')as TBlobField, bmWrite); {‘Doc’为BLOB字段名} MemSize := MyFile.Size; MemSize1:= MyFile1.Size; Inc(MemSize); {Make room for thebuffer's null terminator.} Inc(MemSize1); Buffer := AllocMem(MemSize);{Allocate the memory.} Buffer1:= AllocMem(MemSize1); try Stream.Seek(0, soFromBeginning); {Seek 0 bytes from the stream's end point} Stream1.Seek(0, soFromBeginning); MyFile.Read(Buffer^,MemSize); MyFile1.Read(Buffer1^,MemSize1); test:=strpas(Buffer); test1:=strpas(Buffer1); Stream.Write(Buffer^,MemSize); Stream.Write(Buffer1^,MemSize1); finally MyFile.Free; MyFile1.Free; Stream.Free; Stream1.Free; end;
try Post; except on E: EDatabaseError do Application.HandleException(E); else raise; end; end; end; 我试着建立多个Stream变量,可惜不行,不清楚如何解决,请bios帮一下忙,最好能有代码,谢谢你
----------------------------------------------
- |
作者: |
|
2004/3/7 13:43:57 |
1楼: |
另外,当BLOB内WORD内容被修改存储后,第二次调用的时候经常会出现BLOB HAVE BEEN MODIFIED的信息提示,怎么解决
----------------------------------------------
-
|
|