I my opinion it would be much faster load entire data in a TClientDataSet
and use FINDKEY
to Seek those records.
To use FindKey()
you must define Indexes like this:
Cds.IndexDefs.ADD('IDX1', 'FieldA;FieldB',[]);
Cds.IndexName := 'IDX1';
if Cds.FindKey([A,B]) then begin
//Do something
end;
You can also create multiple indexes and use it whenever you want:
Cds.IndexDefs.ADD('IDX1', 'FieldA;FieldB',[]);
Cds.IndexDefs.ADD('IDX2', 'FieldD;FieldB',[]);
Cds.IndexDefs.ADD('IDX3', 'FieldA;FieldC',[]);
if SeekAB then
Cds.IndexName := 'IDX1'
else if SeekDB then
Cds.IndexName := 'IDX2'
else
Cds.IndexName := 'IDX3';