可是function TcmTry.OpenDatabase: OleVariant; begin objDataSet := TADODataSet.Create( objDataSet ); // ... ... Result := objDataSet; end;最后的返回语句会报类型错误阿
服务端.. Result := objDataSet.recordset;客户端.. 创建一个adoDataSet对象, 假设data:OleVariant;是返回的参数..adoDataSet.recordset:=Iunknown(data) as _recordset; 可以这样传回来,也就是传_recordset接口的引用.. 组件底层会自动对它作散集与列集处理. 这种方法感觉起来比BORLAND的MIDAS方式,也就是用CLIENTDATASET传 数据集要慢一些.不过好处是可以支持其它工具作客户端.. 比如VC,VB,VBS脚本,ASP等..
后来我也这么传过,然后用vb调用,Dim rs as new Adodb.RecordSetSet rs = cmTry.Open 编译都通过了,但是总是非法操作。 还有, 后来我在com中使用CreateOleObject('ADODB.RecordSet') 创建对象进行返回,调用也是同样问题,非法操作。
还有就是,改为传递SYSINT这些,没有问题。
晕。。就算我不大会VB,不过看你这样调用也是错的。。Dim rs as new Adodb.RecordSet ~~~~| 这儿干什么要创建对象啊? Set rs = cmTry.Open ========这是以前写的例子=============================== Sub Main Set pq = WScript.CreateObject("myserver.mytest") Set ab=pq.GetMyTables("") WScript.Echo ab.recordcount End Subcall Main
begin
objDataSet := TADODataSet.Create( objDataSet );
// ... ...
Result := objDataSet;
end;最后的返回语句会报类型错误阿
服务端..
Result := objDataSet.recordset;客户端..
创建一个adoDataSet对象,
假设data:OleVariant;是返回的参数..adoDataSet.recordset:=Iunknown(data) as _recordset;
可以这样传回来,也就是传_recordset接口的引用..
组件底层会自动对它作散集与列集处理.
这种方法感觉起来比BORLAND的MIDAS方式,也就是用CLIENTDATASET传
数据集要慢一些.不过好处是可以支持其它工具作客户端..
比如VC,VB,VBS脚本,ASP等..
编译都通过了,但是总是非法操作。
还有,
后来我在com中使用CreateOleObject('ADODB.RecordSet')
创建对象进行返回,调用也是同样问题,非法操作。
~~~~|
这儿干什么要创建对象啊?
Set rs = cmTry.Open ========这是以前写的例子===============================
Sub Main
Set pq = WScript.CreateObject("myserver.mytest")
Set ab=pq.GetMyTables("")
WScript.Echo ab.recordcount
End Subcall Main