Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehrere Ergebnisse nach eine Datenbanksuche mit Locate (https://www.delphipraxis.net/12313-mehrere-ergebnisse-nach-eine-datenbanksuche-mit-locate.html)

thomasdrewermann 24. Nov 2003 23:09


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:
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);
Der setzt den Pointer jedoch nur auf das erstbeste Ergeniss, das er findet.
Wie kann ich auch noch weitere Suchergebnisse ermitteln?

Wichtig ist mir auch, dass man nach Teilbegriffen suchen kann.

MFG
Thomas

HomerGER 24. Nov 2003 23:19

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

thomasdrewermann 24. Nov 2003 23:28

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

HomerGER 25. Nov 2003 00:12

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
 
was verstehst du denn unter teilbegriffen ?

MrSpock 25. Nov 2003 07:12

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:
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;
oder

SQL-Code:
SELECT * FROM myTable
WHERE TITEL LIKE '%'+suchstr1+'%'+suchstr2+'%'

barnti 25. Nov 2003 07:41

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
 
Hallo,

vielleicht kannst Du die Funktion "lookup" benutzen statt locate ...?

Gruß,

Barnti

oki 25. Nov 2003 08:01

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:
// Index für das betreffende Feld vorher setzen

procedure TForm1.Edit1Change(Sender: TObject);
begin
    Table1.FindNearest([Edit1.Text]);
end;
Gruß oki


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