我又试过了,问题应该出在
vDatas:=aps.AS_GetRecords('DyaDsp',-1,iRecOut,byte(Options),'',params,OwnerData);
这条语句上。
返回值是空的或是无效的。但如何才能不空呢?
但是各个参数什么意思,我实在不通,请大家快指教。
vDatas:=aps.AS_GetRecords('DyaDsp',-1,iRecOut,byte(Options),'',params,OwnerData);
这条语句上。
返回值是空的或是无效的。但如何才能不空呢?
但是各个参数什么意思,我实在不通,请大家快指教。
参数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.至于为何数据包是空的,主要看你的那些参数是否设定正确
这是程序(和李维的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;
Provider组件的连接是否打开,与Provider相连接的数据表是否打开,表的cursor是否设定
正确。