OleContainer操作Excel以二进制方式读写数据库

王朝mssql·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

OleContainer操作Excel以二进制方式读写数据库

OleContainer操作Excel以二进制方式读写数据库 需求源头:

OleContainer操作Excel,想把Excel以二进制方式存入数据库,并且以二进制方式读取

存入流:

Procedure SaveToStream(ADOTable1: TAdoTable)

var

vStream: TMemoryStream;

begin

try

try

vStream := TMemoryStream.Create;

vStream.Clear;

OleContainer1.SaveToStream(vStream);

vStream.Position := 0;

ADOTable1.Append;

TBlobField(ADOTable1.FieldByName('BlobField')).LoadFromStream(vStream);

ADOTable1.Post;

finally

FreeAndNil(vStream);

end;

except

exit;

end;

end;

读取流:

procedure LoadFromStream(ADOTable1: TAdoTable)

var

//注意:这里要用TADOBlobStream,如果用TMemoryStream等流类,则会出现错误

//OleContainer的二进制流格式和Access的二进制流格式不同

//TADOBlobStream是专门用来Access的流转化的,TADOBlobStream继承自TMemoryStream

vStream: TADOBlobStream;

begin

try

vStream := TADOBlobStream.Create(TBlobField(ADOTable1.FieldByName('BlobField')), bmread);

if (OleContainer1.State = osOpen) or (OleContainer1.State = osUIActive) then

begin

OleContainer1.DestroyObject;

end;

vStream.Position := 0;

Olecontainer1.LoadFromStream(vStream);

except

end;

end;

问题总结:

注意流格式的问题。

注:附件里有我的一个小工具,用来帮助自己平时操作Excel在Access中的读取。http://www.delphibbs.com/keylife/iblog_show.asp?xid=21941

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航