W
woshixiaoxin
Unregistered / Unconfirmed
GUEST, unregistred user!
小程序是三层架构,后端DataModule从数据库取10条记录,前端程序在GetNextPacket控制当ClientDataSet数据到10条的时候,就清空前端记录.
A.当ClientDataSet的PacketRecords=2,5等是10的因子的时候,系统正常.
B.当ClientDataSet的PacketRecords=3,7等不是10的因子的时候,系统会循环查询.比如说PacketRecords=34.
在ClientDataSet向后端取数据,前端取三笔,后端会指向第四笔,所以当前端指向第九笔,后端此时指向了第十笔.这是如果再取NextPacket,前端数据取到最后一笔,后端的数据此时已经清空了,此时前端数据还没有清空.两者并没有保持一致.
procedure TForm2.btnGetNextPacket(Sender: TObject);
begin
with cdsTestdo
begin
if not EOF then
Last
else
begin
if RecordCount >= 10 then
begin
EmptyDataSet;
TCDSCracker(cdsTest).ProviderEOF := False;
end;
GetNextPacket;
end;
end;
end;
QQ:16345907技术讨论
A.当ClientDataSet的PacketRecords=2,5等是10的因子的时候,系统正常.
B.当ClientDataSet的PacketRecords=3,7等不是10的因子的时候,系统会循环查询.比如说PacketRecords=34.
在ClientDataSet向后端取数据,前端取三笔,后端会指向第四笔,所以当前端指向第九笔,后端此时指向了第十笔.这是如果再取NextPacket,前端数据取到最后一笔,后端的数据此时已经清空了,此时前端数据还没有清空.两者并没有保持一致.
procedure TForm2.btnGetNextPacket(Sender: TObject);
begin
with cdsTestdo
begin
if not EOF then
Last
else
begin
if RecordCount >= 10 then
begin
EmptyDataSet;
TCDSCracker(cdsTest).ProviderEOF := False;
end;
GetNextPacket;
end;
end;
end;
QQ:16345907技术讨论