AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Access Datenbank Durchsuchen (mit Wildcards)
Thema durchsuchen
Ansicht
Themen-Optionen

Access Datenbank Durchsuchen (mit Wildcards)

Offene Frage von "Honsy"
Ein Thema von Freecer · begonnen am 1. Sep 2004 · letzter Beitrag vom 14. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Freecer

Registriert seit: 30. Okt 2003
44 Beiträge
 
#1

Access Datenbank Durchsuchen (mit Wildcards)

  Alt 1. Sep 2004, 12:19
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.
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#2

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 1. Sep 2004, 22:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 07:22
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 10:24
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 %!
  Mit Zitat antworten Zitat
Freecer

Registriert seit: 30. Okt 2003
44 Beiträge
 
#5

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 10:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 11:00
Hallo Freecer,

mir scheint da ein ' zuviel zu sein! Wie sieht denn der komplette SQL-Befehl aus?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#7

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 11:25
Zitat von r_kerber:
In Access muß man, entgegen dem SQL-Standard, ein * als Jokerzeichen verwenden und nicht das %!
Wusste ich nicht.
  Mit Zitat antworten Zitat
Freecer

Registriert seit: 30. Okt 2003
44 Beiträge
 
#8

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 11:47
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....
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 2. Sep 2004, 13:09
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
aschne1

Registriert seit: 18. Jul 2004
Ort: Davos
64 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Access Datenbank Durchsuchen (mit Wildcards)

  Alt 3. Sep 2004, 09:00
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
Armin
aschne1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:03 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