to enlightenment(阿明--平均睡眠时间<6h/d的超人): 你的意思是不是用几个属性分别导出Recordset的各个字段的值?
应该是包含从Delphi的菜单:Project\Import Type Library...中找到Microsoft AtiveX Data Objects 2.x library(Version 2.x),包含该ADODB_TLB.pas,然后返回: Result := ADODB_TLB._Recordset(tt.Recordset) 我的想法是这样的,试试看 对了要给分啊
To cavalier():差不多,类似情况,我都这么用,只要程序逻辑正确,我用Variant、OleVariant还从来没出过问题呢。
to slx_7(稻草人):对了,谢谢 也谢谢大家的热心帮助
例子代码: (ADODB_TLB用slx_7(稻草人)说的方法从类型库中导出)uses ComObj, ActiveX, GetSet_TLB, StdVcl,ADODB,Forms,ADODB_TLB,Sysutils; ... ...function TTest.GetRecordset: OleVariant; var ds:TADODataSet; cn:TADOConnection;begin cn:=TADOConnection.create(Forms.application); ds:=TADODataSet.Create(Forms.application); cn.ConnectionString:='Provider=SQLOLEDB.1;UID=temp;PWD=temp;'+ 'DataBase=Test;Data Source=server'; cn.LoginPrompt:=false; cn.Open; ds.Connection:=cn; ds.CommandType:=CmdText; ds.CommandText:='SELECT UserID AS 用户编号,UserName AS 用户名称 FROM Test'; ds.Active:=true; result:=ADODB_TLB._Recordset(ds.Recordset); cn:=nil; ds:=nil; end;
uses
ComObj, ActiveX, Project1_TLB, StdVcl,ADODB,Forms;
...
...
function TTest.GetSet: OleVariant;
var
tt:TADODataSet;begin
tt:=TADODataSet.Create(Forms.Application);
result:=tt;
end;出错提示:
Incompatible types: 'OleVariant' and 'TADODataSet'
请帮忙看一下,多谢了。
当然不是直接赋值了,将ADORecordSet变换成你想要的结构,在用标准的Variant操作进行(自然会麻烦一些)。
function TTest.GetSet: _Recordset;
tt:TADODataSet;
result:=tt._Recordset;以上是我瞎写的,请验证一下。不过好象还要加上 uses ado_tlb (不知写错没有)
真的行么?:)人家可是ActiveX DLL啊,标准传递参数类型中可没有什么_Recordset喔!
你的意思是不是用几个属性分别导出Recordset的各个字段的值?
Result := ADODB_TLB._Recordset(tt.Recordset)
我的想法是这样的,试试看
对了要给分啊
也谢谢大家的热心帮助
(ADODB_TLB用slx_7(稻草人)说的方法从类型库中导出)uses
ComObj, ActiveX, GetSet_TLB, StdVcl,ADODB,Forms,ADODB_TLB,Sysutils;
...
...function TTest.GetRecordset: OleVariant;
var
ds:TADODataSet;
cn:TADOConnection;begin
cn:=TADOConnection.create(Forms.application);
ds:=TADODataSet.Create(Forms.application);
cn.ConnectionString:='Provider=SQLOLEDB.1;UID=temp;PWD=temp;'+
'DataBase=Test;Data Source=server';
cn.LoginPrompt:=false;
cn.Open;
ds.Connection:=cn;
ds.CommandType:=CmdText;
ds.CommandText:='SELECT UserID AS 用户编号,UserName AS 用户名称 FROM Test';
ds.Active:=true;
result:=ADODB_TLB._Recordset(ds.Recordset);
cn:=nil;
ds:=nil;
end;