Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbanksuche mit AdsTable (https://www.delphipraxis.net/48498-datenbanksuche-mit-adstable.html)

Grolle 26. Jun 2005 12:58

Datenbank: ADS local • Version: 7 • Zugriff über: Ads Kompos

Datenbanksuche mit AdsTable
 
Hallo!
Ich durchsuche mit
Delphi-Quellcode:
  ADSTable2.Locate('stadt',(Edit2.Text),[loCaseInsensitive,loPartialKey]);
eine Vorwahldatenbank. Wenn ich jetzt z. B. München eingebe
wird mir aber Münchenbernsdorf angezeigt. Kann man ohne großen Aufwand
ändern?
(Das ganze steht im onChange des EditFeldes)

kiar 26. Jun 2005 13:04

Re: Datenbanksuche mit AdsTable
 
hallo Grolle,

ich kenne die Ads DB zwar nicht, ist es aber nicht vorteilhafter mit SQL zu suchen?

ein einfaches
SQL-Code:
select Vorwahl from Tabelle
where Stadt = ' München'
brachte mir das gewünschte Ergebnis.

raik

Grolle 26. Jun 2005 13:16

Re: Datenbanksuche mit AdsTable
 
Dann müsste ich allerdings ADSQuery benutzen?
Damit habe ich noch nie gearbeitet :?

marabu 26. Jun 2005 13:17

Re: Datenbanksuche mit AdsTable
 
Dann lass doch einfach die Option loPartialKey weg.

marabu

Grolle 26. Jun 2005 13:25

Re: Datenbanksuche mit AdsTable
 
Das hatte ich auch schon getestet, aber es funktionierte nicht (vor allem, wenn man etwas
2x hintereinander eingegeben hat).
Ich möchte ja auch, dass die Suche sich mit jeder Eingabe ändert. Werde ich wohl nicht
um die Query herumkommen, was?

marabu 26. Jun 2005 15:08

Re: Datenbanksuche mit AdsTable
 
Hallo Grolle,

ich hatte nicht genau genug gelesen. Was du da machst ist eine Schnellpositionierung innerhalb einer Lookup-Tabelle - oder nicht?

Wenn die Tabelle einen Index auf den Ortsnamen hat, dann sollte bei einer Präfixsuche nach 'München' auch 'München' als oberster Eintrag erscheinen. Eventuell muss der Index mal regeneriert werden?

marabu

joachimd 27. Jun 2005 12:17

Re: Datenbanksuche mit AdsTable
 
Zitat:

Zitat von marabu
Wenn die Tabelle einen Index auf den Ortsnamen hat, dann sollte bei einer Präfixsuche nach 'München' auch 'München' als oberster Eintrag erscheinen. Eventuell muss der Index mal regeneriert werden?

oder wahrscheinlich nur aktiviert (angelegt)? Ein Locate setzt keinen aktiven Index voraus.

Grolle 30. Jun 2005 12:07

Re: Datenbanksuche mit AdsTable
 
Hallo!
Nein auf der Tabelle liegt eigentlich kein Index.
Muss ich für diese Suchfunktion einen erstellen?

marabu 30. Jun 2005 12:11

Re: Datenbanksuche mit AdsTable
 
Zitat:

Das ganze steht im onChange des EditFeldes
Wäre schon besser. Die Positionierung mit Locate() ohne Index wird bestimmt länger dauern als die Pause zwischen zwei Buchstabeneingaben im Edit-Feld...

marabu

Grolle 30. Jun 2005 12:32

Re: Datenbanksuche mit AdsTable
 
Habe jetzt einen Index erstellt. Das Grundproblem,
was ich oben angesprochen habe bleibt. Werd jetzt
mal AdsQuery testen.

joachimd 30. Jun 2005 12:49

Re: Datenbanksuche mit AdsTable
 
Zitat:

Zitat von Grolle
Habe jetzt einen Index erstellt. Das Grundproblem,
was ich oben angesprochen habe bleibt. Werd jetzt
mal AdsQuery testen.

schick mir mal Dein Beispiel (mit Quellcode und Tabelle) an advantage@extendsys.de.

[EDIT] hab's inzwischen bekommen. Er hatte keine Indize..bei einer suche mit Locate springt der Zeiger auf den ersten übereinstimmenden Datensatz und bei seiner natürlichen Sortierung steht München sehr weit hinten (d.h. die anderen Datensätze, welche mit München beginnen, werden zuerst gefunden)[/EDIT]

Grolle 1. Jul 2005 01:36

Re: Datenbanksuche mit AdsTable
 
@ joachimd

Ich hatte doch geschrieben, dass ich die DB ohne Index zuschicke.
Auf jeden Fall funktioniert jetzt alles. Der Teufel steckte mal wieder
im Detail. Bei einigen Städten in der DB war ein Leerzeichen an den
Anfang gesetzt (so auch bei München).

Vielen Dank für eure Hilfe!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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