![]() |
Locate mit mehreren Ergebnissen
Locate ist ja sehr praktisch und schnell zum Auffinden und Anzeigen des ersten Fundes innerhalb einer Tabelle.
Wie kann ich danach auf den zweiten Fund springen, bzw. mir anzeigen lassen? Also quasi den Anfangswert der Suche auf die Position des gefunden Wertes setzen und weitersuchen. Ist das einfach möglich, oder muss ich das konventionell machen. Dann ist Locate in diesem Fall vollkommen unbrauchbar. |
AW: Locate mit mehreren Ergebnissen
Wenn der Index mit der zu suchenden Spalte übereinstimmt ist es besser mit FindKey und while zu arbeiten. Locate arbeitet leider optimiert, so dass der erste Fund nicht unbedingt am Anfang der zu selektierenden Datenmenge steht, sondern an irgend einer. Noch besser wäre natürlich der Einsatz von SQL.
|
AW: Locate mit mehreren Ergebnissen
Zitat:
Wie jedoch ![]()
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; |
AW: Locate mit mehreren Ergebnissen
Tatsächlich kann LocateEx genau das, was ich gesucht hatte.
Es wird bei der weiteren Suche auf den nächsten Datensatz gesprungen. 2 Dinge muss man dazu wissen. Die Sortierung muss für das Feld sein, welches man sucht. Anderenfalls wird die Reihenfolge innerhalb der Tabelle nicht linear abgearbeitet. Die Uses ist nicht MemDS sondern MemData. Und nicht vergessen den Zeiger bei veränderter Suche wieder auf den Anfang zu setzen. Danke für Eure Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz