Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Schnellsuche in DB, wie realisieren? (https://www.delphipraxis.net/160951-schnellsuche-db-wie-realisieren.html)

BBoy 9. Jun 2011 12:17

Datenbank: BDE • Version: 5 • Zugriff über: TurboDB

Schnellsuche in DB, wie realisieren?
 
Ich habe eine Datenbank mit einer Tabelle bei der das Feld Position indiziert ist. Die Tabelle wird in einem DBGrid angezeigt und die Sortierung muss so bestehen bleiben.

Nun möchte ich aber in dieser Tabelle in einem anderen Feld (Name) suchen. Und zwar in dem ich in ein Edit Feld das gesuchte eintippe und immer wenn ich die Eingabetaste drücke soll er ein vorkommen finden und im DBGrid markieren.

Wenn das schon geht wäre gut. Besser wäre wenn nicht nur am Anfang des Feldes gesucht wird, sondern auch Teilstrings innerhalb der Feldes Name. Bei Eingabe von "eier" soll also auch "Meier" gefunden werden.

Kann mir bitte jemand sagen wie ich so etwas realisieren kann?

DeddyH 9. Jun 2011 12:25

AW: Schnellsuche in DB, wie realisieren?
 
Mir scheint, Du suchst Locate.

BBoy 9. Jun 2011 12:57

AW: Schnellsuche in DB, wie realisieren?
 
Mit Locate finde ich das erste vorkommen. Und wie soll ich dann das nächste vorkommen des Suchstrings finden?

DeddyH 9. Jun 2011 13:15

AW: Schnellsuche in DB, wie realisieren?
 
http://www.delphipraxis.net/115965-l...ext-prior.html

mkinzler 9. Jun 2011 18:27

AW: Schnellsuche in DB, wie realisieren?
 
Aber es gilt trotzdem TurboDB != BDE !

BBoy 10. Jun 2011 16:38

AW: Schnellsuche in DB, wie realisieren?
 
Das ist mir schon klar :) Irgendwann werde ich wechseln :oops:

Konnte die Schnellsuche realisieren. Da es sich immer nur um 10-40 Datensätze handelt ist diese Methode OK.

Delphi-Quellcode:
procedure TForm2.RzEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
i : Integer;
begin
  if key = vk_return then begin
    if rzedit2.Text <> '' then begin
      datamodule1.TourTable1.DisableControls;
      for i := AktSIndex to datamodule1.TourTable1.RecordCount -1 do begin
        datamodule1.TourTable1.RecordNo := i;
        if pos(trim(lowercase(rzedit2.Text)),lowercase(datamodule1.TourTable1GSName.AsString)) <> 0 then begin
          datamodule1.TourTable1.EnableControls;
          JvDBUltimGrid2.SelectedIndex := datamodule1.TourTable1.RecordNo;
          aktsindex := datamodule1.TourTable1.RecordNo+1;
          exit;
        end
        else begin
          aktsindex := 1;
        end;
      end;
      datamodule1.TourTable1.EnableControls;
    end;
  end;
end;
Noch Verbesserungsvorschläge ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz