我又试过了,问题应该出在
vDatas:=aps.AS_GetRecords('DyaDsp',-1,iRecOut,byte(Options),'',params,OwnerData);
这条语句上。
返回值是空的或是无效的。但如何才能不空呢?
但是各个参数什么意思,我实在不通,请大家快指教。

解决方案 »

  1.   

    参数3是返回取得的纪录数
    参数4是设定取得的数据包的格式,有3个选择,如下:
    grMetaData The data packet includes metadata as well as record values.
    grReset The records in the data packet start with the first record, regardless of the contents of any previously sent data packets.
    grXML The data packet is transmitted as a string of XML instead of as an OleVariant.至于为何数据包是空的,主要看你的那些参数是否设定正确
      

  2.   

    to TechnoFantasy:请再帮忙看一下吧。小弟我很着急,谢了。
    这是程序(和李维的ADO/MTS/COM+的那本书 P406 的例子程序几乎一样)
    var
      DyaObj:IDyzPerson;
      aps   :IAppServer;
      Options:TGetRecordOptions;
      iRecOut:Integer;
      params:OleVariant;
      OwnerData:OleVariant;
    begin
      try
        OleCheck(ObjectContext.CreateInstance(CLASS_DyzPerson,IID_IDyzPerson,DyaObj));
        aps:=DyaObj as IAppServer;
        Options:=[grMetaData,grReset];
        vDatas:=aps.AS_GetRecords('DyaDsp',-1,iRecOut,byte(Options),'',Params,OwnerData);
        SetComplete;
      except
        SetAbort;
      end;
      

  3.   

    从代码上来看是没有问题的。可能是其它方面的,例如你的参数ProviderName是否设定正确
    Provider组件的连接是否打开,与Provider相连接的数据表是否打开,表的cursor是否设定
    正确。