Arne Danikowski - Di 11.09.07 14:45
Titel: DBASE Datenbank durchsuchen mit TQuery in einem DBGRID
Hallo erst einmal,
ich möchte folgendes realisieren:
Eine Datenbank (DBASE)soll über ein TForm1.Edit1Change durchsucht werden und das Ergebnis in einer DBGRID angezeigt werden. Dabei soll die bei dem ersten Eingegebnen Buchstaben die Suche beginnen (z.B. der Buchstabe A, dann sollen alle Ergebnisse angezeigt werden, die mit A beginnen) wird nun ein weiterer Buchstabe angegeben (z.B. Ad) sollen automatisch alle Ergebnisse die mit Ad beginnen im DBGRID angezeigt werden.
Über eine Checkbox soll die Spalte gewählt werden, die durchsucht werden soll.
folgendes habe ich gemacht.
Eine Session deklariert (z.B. jp)
Eine Table1 angelegt und mit der Dtaenbank und der Session jp verbunden
Einen DataSource1 angelegt und mit der Table verbunden
Eine query1 angelegt und mit DataSource1 und der Table1 sowie der Session verbunden
Eine DataSource2 angelegt und mit query1 verbunden
Eine DBGRID1 erstellt und mit DataSource2 verbunden.
Eine SQL abfrage erstellt für den ersten Programmstart und direkt ins Query1 unter SQL geseichert
(SELECT * FROM jp ODER BY name)
Das funktioniert auch soweit
Hier nun der Quelltext für TForm1.Edit1Change:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Edit1Change(Sender: TObject); var suche:string; begin suche := Edit1.text + '%'; if RadioButton1.Checked = true then begin query1.Close; query1.SQL.Clear; query1.SQL.Add('select * from jp.dbf "'+suche+'"'); query1.Active:=true end else if RadioButton2.Checked = true then begin query1.Close; query1.SQL.Clear; query1.SQL.Add('select * from jp ORDER BY NAME "'+suche+'"' ); query1.Active:=true end else ShowMessage('Bitte einen Filter wählen'); end; |
Das ganze ist noch ein Bastelgerüst, funktioniert auch nicht :) Warum? :)
ich habe das auch schon mal mit diesem Ausdruck versucht:
Delphi-Quelltext
1:
| query1.SQL.Add('select name from jp.dbf WHERE name LIKE "'+suche+'"'); |
dann gibt es jedoch Felher, nicht beim Kompelieren, erst wenn ich versuche einen Buchstaben in das eingabefeld einzugeben.
SQL Fehler.
Kann da jemand einen Newbie helfen?
mfg