请问各位高手一个关于‘分批量获取数据’的问题,Thanks!!! (20分)

  • 主题发起人 主题发起人 pengd
  • 开始时间 开始时间
P

pengd

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]我要做一个三层结构的分批量获取数据应用程序,其中客户端用Clientdataset1获取从中间层检测到的数据,
其中有clientdataset1.fetchonDemand:=false;clientdataset1.packetrecords:=5;各个组件关联都没有问题。
procedure TFORM1.FormShow(sender:TObject);
begin
clientdataset1.data:=clientdataset1.datarequest('select * from user');
end;
中间层用adoquery1,datasetprovider1组件
function TMtsDocumentObj.Tdatasetprovider1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
var
RecsOut:integer;
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(input);
adoquery1.open;
with sender as TdatasetProviderdo
begin
result:=getrecords(5,RecsOut,ResetOption);
end;
end;
user表一共有50条记录,第一批传5条记录,然后我想点击button1进行第二批数据,第三批数据......
请问高手如何编写button1的onclick程序代码,谢谢啦!
 
按照你的方法,你应该传递一个分段的标识,要不你就不用datasetprovider1DataRequest和
clientdataset1在使用带状态的中间层也可以
 
方法1.调用TClientdataset的GetNextPacket方法.
方法2.调用IAppServer接口的GetRecords方法取得指定笔数的数据,
再调用TClientDataSet的AppendData方法把取得的数据加入
到TClientDataSet的快储数据区中。例:
vData :=ClientDataSet1.Appserver.GetRecords(5,iRecords);
ClientDataSet.AppendData(vData,False);
 
北斗:
你好,我用你的方法试了很多次,调用getnextpacket,数据库表还有记录,但是getnextpacket
老是返回0个记录集不行,无法理解,请教!
 
可以呀,你是怎么用的。
 
我试了你的方法2:
方法2.调用IAppServer接口的GetRecords方法取得指定笔数的数据,
再调用TClientDataSet的AppendData方法把取得的数据加入
到TClientDataSet的快储数据区中。例:
vData :=ClientDataSet1.Appserver.GetRecords(5,iRecords);
ClientDataSet.AppendData(vData,False);
我是用socketconnection连接中间层的,请问有ClientDataSet1.Appserver.GetRecords的方
法调用吗?
 
当然有了。这和你用什么连接有什么关系呀?
ClientDataSet1.AppServer之AppServer指的是DataSetProvider。
 
to北斗:
[8D][:(!]我不管用dcomconnection,或者都不管用,delphi说:没有定义方法GetRecords,请问怎么
回事?
 
我在看《DELPHI 5开发人员指南》MIDAS开发章节中,1115~1116有‘限制数据包’的技巧。
你可以去看看
 
哈哈,sorry.
原来要用AS_GetRecords....
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
545
import
I
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部