用olecontainer显示的话
procedure savetodb;//保存到数据库
var
st:TStringStream;
begin
st := tstringstream.create('');
olecontainer1.createfromfile('c:\xxx.cdx',true);//也可以是..('xx.cdx',false);
olecontainer1.savetostream(st);
query1.sql.text := 'insert into TableX Doc_field values :Doc';
query1.parambyname('cdx').asblob := st.datastring;
query1.execsql;
st.free;
end;procedure loadfromdb;//从数据库载入
var
st:TStringStream;
blobsteam:Tblobstream;
begin
st:= tstringstream.create('');
blobStream := TBlobStream.Create(Table1cdx, bmRead);
if BlobStream.Size = 0 then begin
BlobStream.Free;
Exit;
end;
st.CopyFrom(BlobStream, BlobStream.Size);
st.position:=0;//可能直接
olecontainer1.loadfromstream(st);
//可能直接blobstream.position:=0,olecontainer1.loadfromstream(blobstream);也行
st.free;
BlobStream.Free;
end;//save olecontainer to db
procedure TForm1.Button1Click(Sender: TObject);
var
olestream:TStringstream;
begin
if olecontainer1.canpaste then
olecontainer1.paste
else
exit;
table1.Append;
olestream:=Tstringstream.Create('');
olecontainer1.savetostream(olestream);
olestream.position:=0;
Table1ole.AsString:=olestream.DataString;
Table1.Post;
blobstream.free;
oleStream.Free;
end;
//load db to olecontainer
procedure TForm1.Button2Click(Sender: TObject);
var
olestream:TStringstream;
blobstream:TBlobStream;
begin
table1.Edit;
OleContainer1.DestroyObject;
olestream:=Tstringstream.Create('');
blobstream:=TBlobStream.Create(Table1ole,bmReadWrite);
blobstream.Position:=0;
olestream.CopyFrom(blobstream,blobstream.Size);
olestream.Position:=0;
OleContainer1.loadfromstream(olestream);
oleStream.Free;
end;
procedure savetodb;//保存到数据库
var
st:TStringStream;
begin
st := tstringstream.create('');
olecontainer1.createfromfile('c:\xxx.cdx',true);//也可以是..('xx.cdx',false);
olecontainer1.savetostream(st);
query1.sql.text := 'insert into TableX Doc_field values :Doc';
query1.parambyname('cdx').asblob := st.datastring;
query1.execsql;
st.free;
end;procedure loadfromdb;//从数据库载入
var
st:TStringStream;
blobsteam:Tblobstream;
begin
st:= tstringstream.create('');
blobStream := TBlobStream.Create(Table1cdx, bmRead);
if BlobStream.Size = 0 then begin
BlobStream.Free;
Exit;
end;
st.CopyFrom(BlobStream, BlobStream.Size);
st.position:=0;//可能直接
olecontainer1.loadfromstream(st);
//可能直接blobstream.position:=0,olecontainer1.loadfromstream(blobstream);也行
st.free;
BlobStream.Free;
end;//save olecontainer to db
procedure TForm1.Button1Click(Sender: TObject);
var
olestream:TStringstream;
begin
if olecontainer1.canpaste then
olecontainer1.paste
else
exit;
table1.Append;
olestream:=Tstringstream.Create('');
olecontainer1.savetostream(olestream);
olestream.position:=0;
Table1ole.AsString:=olestream.DataString;
Table1.Post;
blobstream.free;
oleStream.Free;
end;
//load db to olecontainer
procedure TForm1.Button2Click(Sender: TObject);
var
olestream:TStringstream;
blobstream:TBlobStream;
begin
table1.Edit;
OleContainer1.DestroyObject;
olestream:=Tstringstream.Create('');
blobstream:=TBlobStream.Create(Table1ole,bmReadWrite);
blobstream.Position:=0;
olestream.CopyFrom(blobstream,blobstream.Size);
olestream.Position:=0;
OleContainer1.loadfromstream(olestream);
oleStream.Free;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货