Delphi-PRAXiS
Seite 2 von 2     12   

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 8. Sep 2004 11:12

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Hallo

Ich entshculdige mich für meine späte antwort, habe im mom echt viel um die ohren :(

Naja wie dem auch sei,

gut hab den code so mal übernommen...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
CommandText: String;
begin
with ADODataSet1 do                                 // TADODataSet
begin
  Close;
  CommandText := 'SELECT Vorname FROM KUNDEN WHERE ';
  CommandText := CommandText + 'Vorname LIKE "%' + Edit1.Text + '%" ';           // % vor Edit1 legt Suchart fest (*Ausdruck* oder Ausdruck*)
  //CommandText := CommandText + 'AND DeineTabelle.Feld2 LIKE "%' + Edit2.Text + '%" ';
  Open;
end;

end;
Gut also ... KUNDEN = Datenbankname

Vorname = Die Tabelle

Das einzige was ich abgewandelt habe ist das
Delphi-Quellcode:
with ADODataSet1 do
da ich ohne query arbeite (ich hoffe das funzt so auch bzw. sollte es??)

Aber wnen ich starte funzt es einwandfrei nur dann gebe ich in das edit z.b. D% ein und klicke auf suchen...

dann sagt er mir:

Zitat:

...EDatabase Error with message 'DBEdit12: Field 'ID' not found....Processe stopped... usw...
Ich erkläre mir diesen fehler so (?) das ich mit diesem data set die grid verbudnen habe und das er mir dann deswegen den fehler anzeigt !?

danke für support :)

aschne1 8. Sep 2004 20:36

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Hallo Freecer

Also ich habe das Ganze nochmals bei mir als Projekt angelegt und es funktioniert. Dabei habe ich Deine Prozedur bei mir in den Code reinkopiert. Also liegt es nicht am String!

Im Projekt verwende ich folgende Komponenten:
Delphi-Quellcode:
    ADOConnection1: TADOConnection;   // Verbindung zu der Datenbank (*.mda)
    ADODataSet1: TADODataSet;         // Datenmenge kann Table oder Query sein (Du arbeitest also nicht ohne Query, das ist Sie)
    Edit1: TEdit;                     // Gesuchter Vorname oder Teil davon - Gesucht wird %Edit1.Text%
    Button1: TButton;                 // Suche wird ausgeführt
    DBGrid1: TDBGrid;                 // Anzeige der Daten (zur Kontrolle)
    DataSource1: TDataSource;         // Verbindet ADODataSet1 mit DBGrid1
Kannst Du bei der ADOConnection1 die Verbindung erfolgreich testen, bzw herstellen? Was für einen Provider verwendest Du in den Datenverknüpfungseigenschaften von ADOConnection1? Ich denke, dass da irgendwo der Fehler liegt. Bitte poste einmal die Datenbank (oder Auszug davon). Dann kann ich mir das mal ansehen und ein funktionierendes Beispiel zurücksenden. :wink:

Gruss
Armin

mikhal 9. Sep 2004 11:24

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Versuch mal statt
Zitat:

Code:
 CommandText := CommandText + 'Vorname LIKE "%' + Edit1.Text + '%" ';

Code:
 CommandText := CommandText + 'Vorname LIKE ' + QuotedStr('%' + Edit1.Text + '%');
Grüße
Mikhal

Freecer 9. Sep 2004 12:03

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Das beispiel direkt ober mir war ebenfalls effekt los, trotzdem THX!

also zu deinen fragen...

in meiner ADOConenction1 is der connect string:

Zitat:

Microsoft.Jet.OLEDB.4.0
Also für access eben...

aber mir geht es nicht ein warum der mir IMMER den fehler anzeigt von der ID? Was hat das mit der suche zu tun??

danke für eure mühen :)

Also das is jetzt aber echt interessant die funktion funktioniert wudnerbar (wie auch nicht anders erwartet und von dir schon kommentiert) habe eben das project so anchgestellt wie du es gesagt hast und die suche funzt einwandfrei :D

also ich gugg jetzt nochmal die sahcen durch...hacke die frag emal als "gelöst" ab... bidde trotzdem im auge behalten dankeeee :D

Hab ich euch schon gesagt das ihr echt doll seit? :)

mfg.

Ok edit numero 3:

Also...

Mich hat es reichlich gestutzt das er immer dieses edit meinte, hab es einfach mal auf Datasource 2 gesetzt so wie alle anderne dits auch, und nun funzt es, aber wieso geht das nicht wenn die edits auf datasource1 gestellt sind????? leuchtet mir nicht ganz ein :?


Edit:4


Bitte habt gedult mit meiner *G*...

Gut hab mir gedacht vlt. liegt es an der selben datasource aber NÖ dem war leider nicht so...


Genauer: Ich hab ne DataSource2 auf die form geklatscht und stellte die edits auf diese ein gut anzeige wie vorhin und ebenfalls selber fehler....nun ist mir zwar wirklich toll geholfen mit der suche *froi* aber interessant were jetzt wie ich das ergebnis der suche in den edits anzeigen lassen kann...also ich suche nach einem name, Klicke den an und in den edits bei name, vorname blablabla wird dann automatisch Vorname, Nachname usw. ausgefüllt, eben wie wenn ich es in der tabelle anklicke nur geht das jetzt eben irgendwi enicht...:? hoffe is nich zu komplex erklärt von mir...

bzw. oder is den mods lieber wenn ich n neues thema dafür aufmache? (wobei das im grunde zusammengehört)

mfg.

Edit:5

So nummer 5 zum schluss....Das obige prob hat sich ebenfalls gerade gelöst...

Es war logisch das die edits nen fehelr verursachen da ich ja nur...

Code:
 CommandText := 'SELECT Vorname FROM KUNDEN WHERE ';
also vorname selektierte...

mit dem * funzte es einwandfrei danke leute ihr seit echt die besten :D

Honsy 13. Sep 2006 13:00

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Moin zusammen, hab jetzt schon so alles was in diesem Thread steht ausprobiert,
aber der schreibt mir keine Daten in mein DB Grid, wenn ich versuche eine suche mittels Editfeld und Wildkarts.

Meine SQL Abfrage sieht dabei so aus:

Delphi-Quellcode:
 query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE (''%' + EditSuche.Text + '%'')';
 query1.open;
Wenn ich anstelle (''%' + EditSuche.Text + '%'')'; einfach einen Namen eingebe findet er in der Accses Datenbank die Einträge.

Kann mir Jemand helfen?

Danke

hirnstroem 13. Sep 2006 13:20

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Parameter definieren solllte helfen:

Delphi-Quellcode:
query1.Parameters.ParamByName('Name').Value := '%' + EditSuche.Text + '%'; // muss nicht Name sein, einfach das entsprechende Feld in deiner Datenbank, nach welchem du halt suchst
query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE :Name'; // selbiges wie oben bei dem Parameter
query1.open;

tr909 13. Sep 2006 13:48

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Zitat:

Zitat von Honsy
Meine SQL Abfrage sieht dabei so aus:
Delphi-Quellcode:
 query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE (''%' + EditSuche.Text + '%'')';
 query1.open;

Probier mal
Delphi-Quellcode:
("%' + EditSuche.Text + '%") anstelle von (''%' + EditSuche.Text + '%'')
Gruß
tr909

Honsy 14. Sep 2006 08:45

Re: Access Datenbank Durchsuchen (mit Wildcards)
 
Delphi-Quellcode:
query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE ''Honsy''';
- funktioniert,

Delphi-Quellcode:
query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE ''EditSuche.Text''';
- funktioniert schon nicht mehr,

Delphi-Quellcode:
query1.sql.text := 'SELECT Projektnummer, Projektname, Name FROM tabelProjekt, tabelProjektleiter WHERE ProjektLeiterID = LeiterID AND Name LIKE ("%' + EditSuche.Text + '%")';
- funktioniert leider auch nicht.


Zitat:

Parameter definieren solllte helfen:
Da kommt die Fehlermeldung: Query1: Parameter 'Name' nicht gefunden.



Gruß Honsy


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.
Seite 2 von 2     12   

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