Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Locate mit mehreren Ergebnissen

  Alt 29. Aug 2013, 10:40
Wie kann ich danach auf den zweiten Fund springen, bzw. mir anzeigen lassen?
In den meisten Queries/Datasets gibt es die Methode LocateNext, bzw. in IbDac LocateEx mit der TLocateExOption lxNext oder auch lxNearest und lxUp (rückwärts).

Wie jedoch Union oben bereits anmerkte, ist Locate für das Iterieren durch eine ausgewählte Datenmenge weniger gut geeignet, weil Locate erstens mit der Suche nicht am Anfang der Tabelle beginnt und zeitens weniger flexibel ist, was die Selektionsmöglichkkeiten betrifft. Besser wäre hier, die gewünschte Datenmenge via SQL zu selectieren und dann vom ersten bis zum letzten Datensatz mit Next zu durchzublättern (iterieren):
Delphi-Quellcode:
MyQuery.Active := False;
MyQuery.SQL.Clear;
MyQuery.SQL.Append('select * from MyTable');
MyQuery.SQL.Append('where Strasse = ' + QuotedStr('Hauptstraße'));
MyQuery.SQL.Append('order by Strasse');
MyQuery.Open;

IF MyQuery.RecordCount > 0 THEN
While not MyQuery.Eof DO
Begin
  DoSomething(MyQuery);
  MyQuery.Next;
End;

Geändert von Perlsau (29. Aug 2013 um 10:43 Uhr)
  Mit Zitat antworten Zitat