AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere Ergebnisse nach eine Datenbanksuche mit Locate
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

Ein Thema von thomasdrewermann · begonnen am 24. Nov 2003 · letzter Beitrag vom 25. Nov 2003
Antwort Antwort
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#1

Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 24. Nov 2003, 23:09
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
Sport ist mord...
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#2

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 24. Nov 2003, 23:19
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
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#3

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 24. Nov 2003, 23:28
Hi HomerGer,
das ist zwar eine der Möglichkeite, die mir aber nicht die Suche nach Teilbegriffen erlaubt.

Aber trotzdem Danke.

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#4

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 25. Nov 2003, 00:12
was verstehst du denn unter teilbegriffen ?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 25. Nov 2003, 07:12
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+'%'
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 25. Nov 2003, 07:41
Hallo,

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

Gruß,

Barnti
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Mehrere Ergebnisse nach eine Datenbanksuche mit Locate

  Alt 25. Nov 2003, 08:01
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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