1、在你的工程里加入一个datamodule,在上面放置tadoconnection、TAdoDataSet控件。
2、用View|type Library打开类型库编辑器,选择你的Active Server Object,增加一个方法(method),在新增加的method的parameter页增加一个参数,type 为VARIANT*,modifier为 out,retval。
3、在Active Server Object对应的单元找到新增加的method,在里面写代码:
datamodule1 := TDataModule1.create(nil);
datamodule1.ADODataSet.commandtext:= 'select * from tab';
datamodule1.ADODataSet.open;
result := datamodule1.ADODataSet.recordset;
datamodule1.free;

解决方案 »

  1.   

    我的asp文件如下写,出错了<%@ Language=VBScript %>
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <%
    dim obj
    dim rs
    set rs=server.createobject("adodb.recordset")
    set obj=server.createobject("HelloWorld.Serverhelloworld")
    set rs=obj.QueryTab()
    if not rs.eof then
      response.write "success"
    else
      response.write "err"
    end if
    set rs=nothing
    set obj=nothing
    %></BODY>    
    </HTML>错误在:set rs=obj.QueryTab()
      

  2.   

    可能是asp无法处理VARIANT*类型的变量
      

  3.   

    因为我用asp调用,可能asp无法解析VARIANT*,但我如果想让返回值是一个字符串呢,但是为什么我定义接口参数为IStrings * 类型时,想设定该参数的Modifier为out是老是提示“Out parameter requires pointer type”难道IStrings * 不是指针类型吗? 
    请问各位大侠,如何定义一个返回参数为字符串的接口??
      

  4.   

    抱歉,我不太清楚如果是asp调用的话应该如何写,在delphi的客户端中,还需要进行一下转换:
    begin
    ADODataSet1.recordSet := IUnknown(vRecordSet ) as _RecordSet ;
    end;
    如果需要定义一个返回参数为字符串,将返回类型定义成 BSTR * ,注意*要自己加。