Ich habe einen kleinen Schönheitsfehler, den ich bisher leider nicht wegbekommen habe
Also, es wird in einem modalen Such-Dialog interaktiv in einer
DB gesucht. Ich connecte die
DB, sobald das Fenster angezeigt wird:
Delphi-Quellcode:
procedure TSuchDialog.Show(Sender: TObject);
var s :
String;
begin
// Werte auf Standard setzen -> bei erneutem Aufruf
Nachname.Text := '
';
PersNr.Text := '
';
Geb.Text := '
';
Label1.Caption := '
';
if SuchDialog.Visible
then
BNachname.Checked := true;
Nachname.Visible := true;
Nachname.SetFocus;
// Verbindung zur gleichen DB initialisieren
// Bestehende Datenbankanbindung trennen
if SuchDialog.ADOConnectionSuch.Connected
then
SuchDialog.ADOConnectionSuch.Connected := False;
// gleichen ConnectionString initialisieren
SuchDialog.ADOConnectionSuch.ConnectionString := Eingabe.ADOConnection.ConnectionString;
end;
und sobald ich dann eben z.B. in dem Textfeld Nachname etwas eingebe, passiert folgendes:
Delphi-Quellcode:
procedure TSuchDialog.NachnameKeyPress(Sender: TObject;
var Key: Char);
begin
// gleichen ConnectionString initialisieren
SuchDialog.ADOConnectionSuch.ConnectionString := Eingabe.ADOConnection.ConnectionString;
with SuchDialog.ADOQuerySuch
do
begin
with SQL do
begin
Clear;
Add('
SELECT * FROM '+ DialogTabelle.TabellenComboBox.Text);
if SuchDialog.BNachname.Checked
then
begin
Add('
WHERE Nachname LIKE ');
Add('
"'+SuchDialog.Nachname.Text+'
%"');
end;
end;
Open;
SuchDialog.Label1.Caption := IntToStr(RecordCount)+'
Personen gefunden:';
end;
end;
nun das Problem: alle Aktionen finden zu spät statt. also, wenn ich ein 'L' eingebe, zeigt er mir nur die Datenbank an, bei z.B. 'Le' sucht er dann nur die Datensätze mit 'L' raus.
wieso und wie kann ich dies verbessern?
Danke!