怎样实现用TOlecontain控件显示ACCESS数据库里的OLE字段值 (50分)

  • 主题发起人 主题发起人 lsz_615
  • 开始时间 开始时间
L

lsz_615

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现用TOlecontain控件显示ACCESS数据库里的OLE字段值
代码如下:
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;
在LoadFromStream处总是出现“invalid stream format”错误?
我实在想不出什么解决办法?

另外这条语句也出现这个错误:
olecontainer1.LoadFromFile('C:/lsz/guangpan/zhijiaguicheng/94/qqq.doc');
是不是控件的某些属性要改呀!
 
我也遇到了同样的问题,但是李维书中通过ADO,并使用临时文件的方法好像可以。
也请高手指点一二。
var
SFileName:String;
BS:TADOBLobStream;
begin
bs:=TADOBLobStream.Create(TBlobField(
DM.ADOTable1.FieldByName('ASK')),bmRead);
try
sFileName:=ExtractFilePath(Application.Exename)+'tempBlob'
+'.DOC';
BS.SaveToFile(SFileName);
OleContainer1.createObjectFromFile(SFileName,False);
finally
BS.Free;
end;
 
谢谢你的参与!
 
var
CurItemStream:TStringStream;
CurItem:Variant;
bwgin
CurItem:=myData.aDOTable1.FieldByName(olefieldname).AsVariant;
CurItemStream:= TStringstream.create(CurItem);
CurItemStream.position:=0;
OleContainer.loadfromstream(CurItemStream);
CurItemStream.free;
OleContainer.DoVerb(0);
end;
 
后退
顶部