![]() |
Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Hi,
ich habe folgende Frage: Im Moment verwende ich zum Durchsuchen meiner Datenbank den untenstehenden Quellcode:
Delphi-Quellcode:
Der setzt den Pointer jedoch nur auf das erstbeste Ergeniss, das er findet.
suchstring:=inputbox('Wonach suchen Sie?','Suchbegriff:','');
if not datamodule2.Table1.Locate('Titel',suchstring,[loPartialKey,loCaseInsensitive]) then if not datamodule2.Table1.Locate('Titel',suchstring,[loPartialKey,loCaseInsensitive]) then Application.MessageBox('Der Wert wurde nicht gefunden','Fehlgeschlagen',16); Wie kann ich auch noch weitere Suchergebnisse ermitteln? Wichtig ist mir auch, dass man nach Teilbegriffen suchen kann. MFG Thomas |
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
moin
Table.First; while not Table.EOF do begin mach was ..... zb if Table.FieldByName('Feld1').AsString = 'Fangmich' then begin ShowMessage('Habdich'); end; Table.Next; end; jetzt sucht er im ersten datensatz der tabelle bis zum letzten |
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Hi HomerGer,
das ist zwar eine der Möglichkeite, die mir aber nicht die Suche nach Teilbegriffen erlaubt. Aber trotzdem Danke. MFG Thomas |
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
was verstehst du denn unter teilbegriffen ?
|
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Hallo Thomas,
locate mit partialkey sucht im Schlüsselfeld immer vom ersten Zeichen an, hilft also nicht für dein Problem, da musst du tatsächlich in einer Schleife durch die Tabelle laufen und mit der Funktion Pos nach dem Vorkommen von suchstring suchen oder eine Query mit dem LIKE Operator erzeugen.
Delphi-Quellcode:
oder
Table.First;
while not Table.EOF do begin if (Pos(suchstr1, Table.FieldByName('Titel').AsString) > 0) AND (Pos(suchstr2, Table.FieldByName('Titel').AsString) > 0)then begin { gefunden } end; Table.Next; end;
SQL-Code:
SELECT * FROM myTable
WHERE TITEL LIKE '%'+suchstr1+'%'+suchstr2+'%' |
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Hallo,
vielleicht kannst Du die Funktion "lookup" benutzen statt locate ...? Gruß, Barnti |
Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Hi,
wenn du auf das Feld einen Secundärindex definiert fast, dann kann man sehr gut mit FindNearest arbeiten (Bsp. in der OH). Ich nutze diese Methode gerne um in Datenbanksichten mit Eingabe in ein Edit für den Suchbegriff fortlaufent nach Eingabe zu suchen. FindNearest setzt den Cursor auf den Datensatz, der dem Wert naheliegensten Feldeintrag entspricht.
Delphi-Quellcode:
Gruß oki
// Index für das betreffende Feld vorher setzen
procedure TForm1.Edit1Change(Sender: TObject); begin Table1.FindNearest([Edit1.Text]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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