这点代码错在那里?关于流操作(20分)

  • 主题发起人 主题发起人 kuilou
  • 开始时间 开始时间
K

kuilou

Unregistered / Unconfirmed
GUEST, unregistred user!
急,在线等待,这点代码错在那里?关于流操作,从库中取得WORD 文档(三层结构DELPHI+SQL SERVER),
var
s : tmemorystream;
v1 : Variant ;
begin
s:=tmemorystream.Create;
form1.ClientDataSet1.Active:=true;
Tblobfield(form1.ClientDataSet1.FieldByName('wlc2')).SaveToStream(s);
s.Position:=0;
OleContainer1.LoadFromStream(s);//到这出错:流读取错误!
OleContainer1.DoVerb(ovshow);
end;
 
s:=tmemorystream.Create;//补充这是他的存:
OleContainer1.SaveToStream(s);
s.Position:=0;
form1.ClientDataSet1.Active:=true;
form1.ClientDataSet1.Insert;
form1.ClientDataSet1.FieldByName('wlc2').AsVariant:=s.copyfrom(s,s.Size);
form1.ClientDataSet1.ApplyUpdates(0);
 
看来是Save的不对,
form1.ClientDataSet1.FieldByName('wlc2').AsVariant:=s.copyfrom(s,s.Size);
这样 wlc2只保存了 CopyFrom的结果:Longint类型,根本没有保存Ole数据

Save:
OleContainer1.SaveToStream(s);
s.Position:=0;
form1.ClientDataSet1.Active:=true;
form1.ClientDataSet1.Insert;
TBlobField(form1.ClientDataSet1.FieldByName('wlc2')).LoadFromStream(s);
form1.ClientDataSet1.ApplyUpdates(0);

Load:
form1.ClientDataSet1.Active:=true;
Tblobfield(form1.ClientDataSet1.FieldByName('wlc2')).SaveToStream(s);
s.Position:=0;
OleContainer1.LoadFromStream(s);
OleContainer1.DoVerb(ovshow);
end;

试试 :)
 
不行到这
TBlobField(form1.ClientDataSet1.FieldByName('wlc2')).LoadFromStream(s);
不通过。不知为什么?
 
可能和流格式有关。
流中的数据格式不符。
 
语句没什么问题吧?是不是存得不对?
 
后退
顶部