Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Access Datenbank Durchsuchen (mit Wildcards) (https://www.delphipraxis.net/28929-access-datenbank-durchsuchen-mit-wildcards.html)

Freecer 1. Sep 2004 12:19


Access Datenbank Durchsuchen (mit Wildcards)
 
Hallo allerseits...

Für nen profi is die frage sicher kein problem, aber für mich stellt sie seit gestern ein unüberwindbares problem da....das sich wie folgt abzeichnet,

Ich hab eine datenbank mit access, greife über ADO zu lese sie in ein DBGrid ein bis dahin kein prob, nur jetzt kommt meine hürde :)

Ich würde gerne eine suchfunktion einbauen die mir mit "Wildcards" die passenden ausgaben in die DBGrid einsetzt, also so...

Ich würde die Funktion auf ein OnEditchange stellen das nehmen wir an meine db sieht wie folgt aus:

Name1
test123
auto

Also ich tippe in das feld "A" ein dann will ich ALLE sachen die mit A anfangen ausgegeben lassen, in der DBGrid!

Hab hier im forum seit gestern gesucht aber nichts "passendes" gefunden :( oder ich bin einfach nicht im stande die sachen so umzusetzen, bis jetzt beschränkt sich mein wissen darauf das man so nur in SQL statements suchen kann?? Is die annahme korrekt??

Danke für jede hilfe :)

mfg.

Treffnix 1. Sep 2004 22:05

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
In SQL ist % die Wildcard.

Du könntest also beispielsweise so vorgehen
Delphi-Quellcode:
procedure DeinFormular.DeinEditChange(Sender: TObject);
Begin
  DeinQuery.Close;
  DeinQuery.SQL.Text := 'Select * from DeineTabelle where Name like ''' +
                         DeinEdit.Text + '''%';
  DeinQuery.Open;
End;
Allerdings weiss ich nicht, wie perfomant das ganze ist.

Du solltest dir auch mal das Property Filter des Querys ansehen.

Sharky 2. Sep 2004 07:22

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Zitat:

Zitat von Freecer
...
Ich würde die Funktion auf ein OnEditchange stellen das nehmen wir an meine db sieht wie folgt aus:
....

Hai Freecer,
da Du in diesem Fall ja keine Suchefunktion baust sondern einen Filter würde ich das auf keinen Fall im OnChange eines Edits machen. Da würde bedeuten das bei jeder Änderung im Edit eine neue Abfrage der Datenbank gemacht wird. Nehme dafür lieber einen Button.

r_kerber 2. Sep 2004 10:24

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Zitat:

Zitat von Treffnix
Delphi-Quellcode:
procedure DeinFormular.DeinEditChange(Sender: TObject);
Begin
  DeinQuery.Close;
  DeinQuery.SQL.Text := 'Select * from DeineTabelle where Name like ''' +
                         DeinEdit.Text + '''%';
  DeinQuery.Open;
End;

In Access muß man, entgegen dem SQL-Standard, ein * als Jokerzeichen verwenden und nicht das %!

Freecer 2. Sep 2004 10:52

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
aller erstmal, danke für euere dolle hilfe :) Echt klasse,

nun, das mit dem Filter hab ich mir schon angesehn aber da ist mir nicht bekannt das man wildcards nutzen kann (?) also gut hab das jetzt mal eingebaut, aber er meint,

Zitat:

Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Nachname like 'Weigl'*'
Gut ich steh wieder an :) hoffe auf weitere hilfe :)

mfg.

r_kerber 2. Sep 2004 11:00

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Hallo Freecer,

mir scheint da ein ' zuviel zu sein! Wie sieht denn der komplette SQL-Befehl aus?

Treffnix 2. Sep 2004 11:25

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Zitat:

Zitat von r_kerber
In Access muß man, entgegen dem SQL-Standard, ein * als Jokerzeichen verwenden und nicht das %!

:oops: Wusste ich nicht.

Freecer 2. Sep 2004 11:47

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
  Query1.SQL.Text := 'Select * from KUNDEN where Nachname like ''' +
                         Edit1.Text + '''%';
  Query1.Open;

end;
oder eben mit * macht aber bis dahin keinen unterschied....

mikhal 2. Sep 2004 13:09

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
es ist zwar richtig, daß der Allquantor in Access '*' lautet, aber wenn ich über ADO auf Access zugreife, klappt das mit '*' nicht sondern ausschließlich mit dem gewohnten SQL-Allquantor '%'.

Das Gleiche gilt auch für den Quantor '?' in Access für ein Zeichen, unter ADO lautet der aber trotzdem '_'.

Grüße
Mikhal

aschne1 3. Sep 2004 09:00

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Hallo Freecer

Ich verwende ebenfalls Access mit ADO. Mit folgendem Code müsste es gelingen:
Delphi-Quellcode:
 with DeineQuery do                                 // TADODataSet
 begin
  Close;
  CommandText := 'SELECT DeineTabelle.Feld1, DeineTabelle.Feld2 FROM DeineTabelle WHERE ';
  CommandText := CommandText + 'DeineTabelle.Feld1 LIKE "%' + Edit1.Text + '%" ';           // % vor Edit1 legt Suchart fest (*Ausdruck* oder Ausdruck*)
  CommandText := CommandText + 'AND DeineTabelle.Feld2 LIKE "%' + Edit2.Text + '%" ';
  Open;
 end;
Damit nicht nach jeder Taste die Abfrage neu berechnet wird, kannst Du einen Timer einsetzen. Im OnChange wird nur der Timer neu gestartet, beziehungsweise eingeschaltet. Im OnTimer wird die Abfrage neu geschrieben und anschliessend der Timer ausgeschaltet. Den Timer auch bei Exit vom Editfeld ausführen.
So kannst Du dir eventuell den Button sparen(Sorry Sharky). Der Button ist geschmacksache, oder ?

MFG

Armin


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Seite 1 von 2  1 2      

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