L
lsz_615
Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现用TOlecontain控件显示ACCESS数据库里的OLE字段值(存储Word文档)
有两种基本方案,都试过了,但都不行。
第一种:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
BS:TBlobStream;
begin
bs:=TBlobStream.Create(Table1.FieldbyName('neirong') as TBlobField,bmRead);
if BS.Size<>0 then
try
with olecontainer1 do
begin
LoadFromStream(BS); //在这提示“invalid Stream format错误!
if State<>osEmpty then
Iconic:=true;
end;
finally
bs.Free;
end;
end;
第二种:
ms:Tmemorystream;
fname:string;
begin
ms:=Tmemorystream.Create;
TBlobfield(Table1.fieldbyname('neirong')).savetostream(ms);
fname:=ExtractFilePath(Application.Exename)+'tempBlob'
+'.DOC';
ms.SaveToFile(fname);
olecontainer1.CreateObjectFromFile(fname,false);
ms.Free;
end;
提示一个让你选择转换文件类型的窗口,但里面绝对没有word97,哪一个也
打不开“fname”这个文件。
有两种基本方案,都试过了,但都不行。
第一种:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
BS:TBlobStream;
begin
bs:=TBlobStream.Create(Table1.FieldbyName('neirong') as TBlobField,bmRead);
if BS.Size<>0 then
try
with olecontainer1 do
begin
LoadFromStream(BS); //在这提示“invalid Stream format错误!
if State<>osEmpty then
Iconic:=true;
end;
finally
bs.Free;
end;
end;
第二种:
ms:Tmemorystream;
fname:string;
begin
ms:=Tmemorystream.Create;
TBlobfield(Table1.fieldbyname('neirong')).savetostream(ms);
fname:=ExtractFilePath(Application.Exename)+'tempBlob'
+'.DOC';
ms.SaveToFile(fname);
olecontainer1.CreateObjectFromFile(fname,false);
ms.Free;
end;
提示一个让你选择转换文件类型的窗口,但里面绝对没有word97,哪一个也
打不开“fname”这个文件。