Einzelnen Beitrag anzeigen

Crowbar

Registriert seit: 17. Jun 2002
43 Beiträge
 
#1

Locate im Zusammenhang mit ab- und aufsteigender Sortierung

  Alt 12. Mai 2007, 18:37
Datenbank: dBase • Zugriff über: TDBF
Hallo,
ich lade eine DBase-Tabelle in einem DBGrid. Wenn der Anwender mit der Maus auf die Titelleiste klickt, soll es entweder aufsteigend oder absteigend sortiert werden. Nun, dies funktioniert soweit prima.
Zusätzlich gibt es eine Edit-Feld, worin der Benutzer die Anfangsbuchstaben z.B. eines zu suchenden Namen eingeben kann.

Ist der Index aufsteigend sortiert, klappt es prima, d.h. z.B. Eingabe von "m" und das DBGrid springt zum ersten Namen, der mit "m" beginnt.
Sobald jedoch der Index absteigend sortiert ist, wird erst zum richtigen Datensatz gesprungen, wenn der zu suchende Name komplett in das Edit-Feld eingegeben wurde.
z.B. Name = "mustermann" => erst bei vollständiger Eingabe von "mustermann" wird auf den Datensatz gesprungen (natürlich vorausgesetzt, dass der Name in der Datenbank existiert)

Wieso ist das so? Gibt es dafür eine Lösung?

Hiermit wird entweder ab- oder aufsteigend sortiert:
Delphi-Quellcode:
...
with KundenDbf do
 ...
  if absteigend then AddIndex('IDXNAME','NAME',[ixDescending]) { Sortierreihenfolge absteigend }
  else
   AddIndex('IDXNAME','NAME',[]); { Sortierreihenfolge aufsteigend }
 ...
 end;
...
Das steht in meiner "OnChange" - Routine vom Edit-Feld:
Delphi-Quellcode:
...
MainForm.KundenDbf.Locate('NAME',NameSuchEdit.Text,[loCaseInsensitive,loPartialKey]);
...
Gruß
Crowbar
  Mit Zitat antworten Zitat