unit ole;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtnrs, DB, ADODB, DBCtrls, Grids, DBGrids, DBTables;type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
Button1: TButton;
Button2: TButton;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOTable1a: TStringField;
ADOTable1b: TBlobField;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
bs:TBlobStream;
//bs2:tstream;
begin
adotable1.Open;
bs:= TBlobStream.Create(ADOTable1b,bmReadWrite);
try
OleContainer1.SaveToStream(bs); adotable1.Edit;
//bs2 :=adotable1.CreateBlobStream(adotable1.FieldByName('b'),bmReadWrite)
// Stream2.CopyFrom(Stream1, Stream1.Size);
// ClientDataSet1.Post; //tblobfield(adotable1.FieldByName('b')).LoadFromStream(bs);
ADOTable1b.LoadFromStream(bs);
adotable1.Post;
finally
bs.free;
end;end;{procedure TForm1.Button2Click(Sender: TObject);
var
bs:TBlobStream;
begin
adotable1.Open;
bs:= TBlobStream.Create(ADOTable1b,bmReadWrite);
try
adotable1.Edit;
ADOTable1b.SaveToStream(bs);
OleContainer1.LoadFromStream(bs);
adotable1.Post;
finally
bs.free;
end;end; }
end.报错是:编译的时候显示:Invalid TypeCast异常。请问是怎么回事?具体可能就是bs的初始化问题。
我的数据库是SQL,字段是'b',类型设为image(我想要的类型是BLOB类型)。
主要的思路是:把OLE的信息保存到BS流中,再把流直接写到数据库的‘b'字段中。然后再掉出来!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtnrs, DB, ADODB, DBCtrls, Grids, DBGrids, DBTables;type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
Button1: TButton;
Button2: TButton;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOTable1a: TStringField;
ADOTable1b: TBlobField;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
bs:TBlobStream;
//bs2:tstream;
begin
adotable1.Open;
bs:= TBlobStream.Create(ADOTable1b,bmReadWrite);
try
OleContainer1.SaveToStream(bs); adotable1.Edit;
//bs2 :=adotable1.CreateBlobStream(adotable1.FieldByName('b'),bmReadWrite)
// Stream2.CopyFrom(Stream1, Stream1.Size);
// ClientDataSet1.Post; //tblobfield(adotable1.FieldByName('b')).LoadFromStream(bs);
ADOTable1b.LoadFromStream(bs);
adotable1.Post;
finally
bs.free;
end;end;{procedure TForm1.Button2Click(Sender: TObject);
var
bs:TBlobStream;
begin
adotable1.Open;
bs:= TBlobStream.Create(ADOTable1b,bmReadWrite);
try
adotable1.Edit;
ADOTable1b.SaveToStream(bs);
OleContainer1.LoadFromStream(bs);
adotable1.Post;
finally
bs.free;
end;end; }
end.报错是:编译的时候显示:Invalid TypeCast异常。请问是怎么回事?具体可能就是bs的初始化问题。
我的数据库是SQL,字段是'b',类型设为image(我想要的类型是BLOB类型)。
主要的思路是:把OLE的信息保存到BS流中,再把流直接写到数据库的‘b'字段中。然后再掉出来!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货