可以!使用OleVariant导出即可!

解决方案 »

  1.   

    不行啊,我这样写了一个测试例子,但通不过,不知道对不对?
    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'
    请帮忙看一下,多谢了。
      

  2.   


        当然不是直接赋值了,将ADORecordSet变换成你想要的结构,在用标准的Variant操作进行(自然会麻烦一些)。
      

  3.   

    不要用OLEVARIANT,直接返回_Recordset
    function TTest.GetSet: _Recordset;
    tt:TADODataSet;
    result:=tt._Recordset;以上是我瞎写的,请验证一下。不过好象还要加上 uses ado_tlb (不知写错没有)
      

  4.   


    真的行么?:)人家可是ActiveX DLL啊,标准传递参数类型中可没有什么_Recordset喔!
      

  5.   

    to enlightenment(阿明--平均睡眠时间<6h/d的超人):
    你的意思是不是用几个属性分别导出Recordset的各个字段的值?
      

  6.   

    应该是包含从Delphi的菜单:Project\Import Type Library...中找到Microsoft AtiveX Data Objects 2.x library(Version 2.x),包含该ADODB_TLB.pas,然后返回:
    Result := ADODB_TLB._Recordset(tt.Recordset)
    我的想法是这样的,试试看
    对了要给分啊
      

  7.   

    To cavalier():差不多,类似情况,我都这么用,只要程序逻辑正确,我用Variant、OleVariant还从来没出过问题呢。
      

  8.   

    to slx_7(稻草人):对了,谢谢
    也谢谢大家的热心帮助
      

  9.   

    例子代码:
    (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;