![]() |
Datenbank: IB • Version: 13.3 • Zugriff über: IBTable
Locate findet nix
Moin Experten :)
Nach einigen Jahren mache ich mal wieder etwas mit Delphi und bin gleich auf ein Verständnisproblem gestoßen: Ich suche mit Table.Locate einen Substring. Die Methode finde den aber prinzipiell nicht, trotzdem er vorhanden ist. Hier ein Beispiel: Feld: "IP" Inhalt: "1.2.3.0/24" Nun will ich nach dem ersten Feld suchen, das die ersten drei Ziffern der Adresse enthält: T.Locate('IP', '1.2.3', [lopart.. Ergebnis: false Ein SQL mit Platzhaltern findet alles Ähnliche, ist aber zu langsam und unpräzise. Wie macht man das richtig? Danke & VG :) |
AW: Locate findet nix
Hallo,
Zitat:
Starting With benutzen Index auf das Feld IP setzen PS: Was passiert, wenn du mal den vollständigen Feldinhalt suchst, dann auch ohne das foPartialKey. |
AW: Locate findet nix
Moin...:P
Zitat:
|
AW: Locate findet nix
Zitat:
SQL-Code:
In diesem Fall ist SQL eigentlich immer schneller und besser, da das DBMS, welches sich dann um die Abfrage kümmert, dafür optimiert ist.
select * from <tabelle>;
|
AW: Locate findet nix
Hallo,
nicht immer, das IBTable.Locate macht intern auch eine SQL-Abfrage. Aber: Information at your fingertips. Bei mir geht keine Query-Abfrage ohne Prüfung raus zum Kunden. |
AW: Locate findet nix
Ohne im Detail geschaut zu haben, glaube ich eher nicht, das ein locate eine neue Abfrage absendet. Es wird ja "nur" der datensatzzeiger in der lokalen Kopie der Daten verschoben. Bei einer Lookup schon eher (oder nur einen lokalen Filter).
Grundsätzlich werden alle Aktionen, welche eine Verbindung zum DBMS benötigen (Refresh, Insert/Update/Delete, ..) in SQL-Statements umgesetzt und vom DBMS ausgeführt. Diese sind in der Regel allgemeiner, als händisch zum Problem bezogen geschriebene. |
AW: Locate findet nix
Hallo,
Zitat:
Aber ich glaube das auch erst, wenn da ein SQL-Monitor mitläuft. |
AW: Locate findet nix
IBQuery benutzen
Starting With benutzen Index auf das Feld IP setzen PS: Was passiert, wenn du mal den vollständigen Feldinhalt suchst, dann auch ohne das foPartialKey.[/QUOTE] Also das habe ich nu probiert und er findet auch das nicht - trotzdem ein passender Datensatz vorhanen ist. Das Feld in der Datenbank ist vom Typ char und länger als der Suchstring. Könnte der Fehler in einer unterschiedlichen Stringbehandlung liegen? Muss ich evtl. nach etwas Anderem (z.B. folgenden Leerzeichen) suchen? |
AW: Locate findet nix
Hallo,
hast du Starting With probiert? |
AW: Locate findet nix
Hallo,
Zitat:
Kann es sein, dass der Datensatz mit Leerzeichen gespeichert wurde? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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-2025 by Thomas Breitkreuz