procedure TsampleForm.OpenDOCClick(Sender: TObject); var MemSize: Integer; Buffer: PChar; MyFile: TFileStream; Stream: TBlobStream; begin OpenDialog1.Filter:='WORD文档(*.DOC)|*.DOC';{从对话窗选择文件} if OpenDialog1.Execute then begin MyFile:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead); with table1 do {‘table1’为含BLOB字段的表名} begin Open; Edit; Stream := TBlobStream.Create(FieldByName('Doc') as TBlobField, bmWrite);{‘Doc’为BLOB字段名} MemSize := MyFile.Size; Inc(MemSize); {Make room for the buffer's null terminator.} Buffer := AllocMem(MemSize); {Allocate the memory.} try Stream.Seek(0, soFromBeginning); {Seek 0 bytes from the stream's end point} 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; Doc_ole.CreateObjectFromFile(OpenDialog1.FileName,False); Doc_ole.Run;{Doc_ole为ToleContainer构件名} end; end;
procedure Tfrmdyqk1.BitBtn3Click(Sender: TObject);
var ms:TMemoryStream;
begin
ms:= TMemoryStream.create;
OleContainer1.SaveToStream (ms);
ms.Position := 0; Query1.close;
Query1.sql.clear;
Query1.sql.text:='select * from oadbo.bw_qwb';
Query1.open;
Query1.append;
Query1.fieldbyname('wjid').value:=77777777 ;
Query1.fieldbyname('wjdid').value:=7;
Query1.fieldbyname('kzm').value:='txt';
TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms);
ms.free;
Query1.post;
//Query1.applyupdates;
Query1.close;
end;
procedure Tfrmdyqk1.Button2Click(Sender: TObject);
var strstream:Tmemorystream;
//ls_qw:string;
begin OleContainer1.DestroyObject;
strstream := Tmemorystream.Create; query1.Close;
query1.sql.clear;
query1.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(77777777));
query1.open ;
query1.First;
Tblobfield(query1.fieldbyname('qw')).savetostream(strstream);
strstream.position:=0;
OleContainer1.loadfromstream(strstream); strstream.free;
end;
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
begin
OpenDialog1.Filter:='WORD文档(*.DOC)|*.DOC';{从对话窗选择文件}
if OpenDialog1.Execute then
begin
MyFile:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
with table1 do {‘table1’为含BLOB字段的表名}
begin
Open;
Edit;
Stream := TBlobStream.Create(FieldByName('Doc') as TBlobField,
bmWrite);{‘Doc’为BLOB字段名}
MemSize := MyFile.Size;
Inc(MemSize); {Make room for the buffer's null terminator.}
Buffer := AllocMem(MemSize); {Allocate the memory.}
try
Stream.Seek(0, soFromBeginning); {Seek 0 bytes from the stream's
end point}
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;
Doc_ole.CreateObjectFromFile(OpenDialog1.FileName,False);
Doc_ole.Run;{Doc_ole为ToleContainer构件名}
end;
end;