hallo danny!
zunächst mal schöne grüsse nach berlin
bei einer änderung vom TTable zu einer TQuery ändert sich an deinem formular und an deinem edit-feld gar nichts.
probiert zunächst mal in der IDE aus.
- TQuery aufs form ziehen
- database eintragen
- datasource mit TQuery verbinden
- im property 'Strings' eintragen 'SELECT * FROM DeinTabellenname'
sobald du nun im OI bei deiner Query 'active' auf 'true' stellst, solltest du schon den tabelleninhalt angezeigt bekommen.
um nach einer oder mehreren artikelnummern zu suchen, legst du dir am besten einen formatstring. der vorteil zur parameterübergabe liegt darin, dass man auch die felder, nach denen gesucht werden soll, variabel gestalten kann.
und in die procedure Edit1Exit oder SuchBtnClick kommt der folgende code:
(annahme: deine Query heisst ArtikelQuery)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var cSql: String; SqlString: String;
begin cSql:= 'SELECT * FROM DeinTabellenname (WHERE ArtikelNr = "%s")' SqlString:= Format(cSql,[Edit1.Text]); with ArtikelQuery do begin Close; SQL.Clear; SQL.Add(SqlString); Open end; end; |
und in der procedure FormClose deines formulares überprüfen, ob die query aktiv ist und ggf schliessen.
du kannst auch eine lösung mit jokern anbieten - zb das Edit-Feld immer mit einem '*' vorbelegen und bekommst so alle datensätze angezeigt, wenn du
1) deinen cCSL-string wie folgt änderst:
Delphi-Quelltext
1:
| (WHERE ArtikelNr LIKE "%s") |
2) vor dem zuweisen des Edit-Textes
alle darin vorkommenden '*' in '%' und '?' in '_' änderst.
im file localsql.hlp, welches sich in deinem verzeichnis BDE befindet, findet du zusätzliche infos über SQL & konsorten
wie du siehst, gar keine hexerei und bestimmt um einiges schneller als die lösung mit einem TTable.
mfg, stefan
//edit:
du startest deine suche im 'TEdit.OnChange '?
d.h. nach jeder eingabe eines zeichens läuft die suchroutine, auch bei falschen eingaben, da der user/ die userin gar keine gelegenheit hat, die eingabe noch richtigzustellen...
daher bevorzuge ich die lösung im OnExitEvent bzw den start mit einem eigenen button.