BeforeGetRecords (Delphi)
Contents
Description
This example shows how to use the BeforeGetRecords event handler (a TRemoteEventType value) to send the provider information it needs for incremental data fetching. Before fetching the next data packet, the client dataset packages up the key value of the last record so that the provider knows where to begin the next data packet. It also sends some application-specific information, which is stored in Memo1. This method is used to pass the sql statement and the value of the first field for the last record to the server so that the server can return the correct records. The complete project using this code example is in Demos/DelphiWin32/VCLWin32/MIDAS/Pooler.
Code
procedure TForm1.ClientDataSet1BeforeGetRecords(Sender: TObject; var OwnerData: OleVariant);
var
LastValue: OleVariant;
CDSClone: TClientDataSet;
begin
if ClientDataSet1.Active then
begin
CDSClone := TClientDataSet.Create(Form1);
try
CDSClone.CloneCursor(ClientDataSet1, True);
{ Turn off FetchOnDemand so that the clone only fetches
the last LOCAL record. }
CDSClone.FetchOnDemand := False;
CDSClone.Last;
LastValue := CDSClone.Fields[0].AsString;
CDSClone.Close;
finally
CDSClone.Free;
end;
end else
LastValue := NULL;
OwnerData := VarArrayOf([Memo1.Lines.Text, LastValue]);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.PacketRecords := StrToInt(Edit1.Text);
ClientDataSet1.GetNextPacket;
end;
Uses
- Datasnap.DBClient.TCustomClientDataSet.BeforeGetRecords ( fr | de | ja )
- Datasnap.DBClient.TCustomClientDataSet.Active ( fr | de | ja )
- Datasnap.DBClient.TCustomClientDataSet.FetchOnDemand ( fr | de | ja )
- Datasnap.DBClient.TCustomClientDataSet.CloneCursor ( fr | de | ja )
- Datasnap.DBClient.TCustomClientDataSet.GetNextPacket ( fr | de | ja )
- Datasnap.DBClient.TCustomClientDataSet.PacketRecords ( fr | de | ja )
- Data.DB.TDataSet.Last ( fr | de | ja )