本人正在编写一个COM+组件,要求在组件中封装ADO对象,要求能够返回RecordSet记录集,但返回记录集时不知拿什么数据类型来接收,特来请教高手。
方法如下:……
cn:Variant;
rs:Variant;……procedure TAdoComPlus.setConnection(const strConnection: WideString);
begin
cn:=CreateOleObject('ADODB.Connection');//创建ADO Connetcion对象,对象名为cn
cn.Open(strConnection);
end;
//打开strSql变量所保存的记录集
procedure TAdoComPlus.openRecordSet(const strSQL: WideString; cursorType,
lockType: Integer);
begin
rs:=CreateOleObject('ADODB.RecordSet'); //创建ADO RecordSet对象,对象名为rs
rs.Open(strSQL,cn,cursorType,lockType);
end;……//以下为返回记录集的函数:
function TAdoComPlus.getRecordSet: OleVariant;
begin
Result:=rs;
end;Variant类型和RedorcSet类型如何转换?而且在Delphi没有RecordSet类型,怎么处理?还望高手指点。
方法如下:……
cn:Variant;
rs:Variant;……procedure TAdoComPlus.setConnection(const strConnection: WideString);
begin
cn:=CreateOleObject('ADODB.Connection');//创建ADO Connetcion对象,对象名为cn
cn.Open(strConnection);
end;
//打开strSql变量所保存的记录集
procedure TAdoComPlus.openRecordSet(const strSQL: WideString; cursorType,
lockType: Integer);
begin
rs:=CreateOleObject('ADODB.RecordSet'); //创建ADO RecordSet对象,对象名为rs
rs.Open(strSQL,cn,cursorType,lockType);
end;……//以下为返回记录集的函数:
function TAdoComPlus.getRecordSet: OleVariant;
begin
Result:=rs;
end;Variant类型和RedorcSet类型如何转换?而且在Delphi没有RecordSet类型,怎么处理?还望高手指点。
在客戶端直接把ClientDataSet.recordset = getRecordset
……
ADOQuery1.recordset := Iunknown(iADo.getRecordSet) as _Recordset;
datasource1.DataSet:=adoquery1;
dbgrid1.DataSource:=datasource1;
……结果却出现如下错误:
raised exception class EDatabaseError with message 'Dataset does not support books,which are required for multi-record data controls';
答:汗不知,哪位兄弟给解决一下:)