Hallo,
1. Ich habe auf einem Formular 14 Editfelder für verschiedene Suchkriterien.
1
Query
1 Datasource
1 DBGrid
2. In der Create von diesem Formular setze ich folgendes:
Delphi-Quellcode:
session.PrivateDir := Label23.Caption;
session.NetFileDir := Memo6.Lines[0];
3. Im OnKeyPress Ereigniss dieser Editfelder steht folgendes:
Delphi-Quellcode:
procedure TForm1.Edit5KeyPress(Sender: TObject;
var Key: Char);
var pruefEingabe: integer;
s:
string;
begin
pruefEingabe:=ord(key);
if (pruefEingabe=13)
or (Sender = DBEdit20)
then //Enter-Taste gedrückt??
begin
FindSQL(sender);
// Hier wird der SQL String zusammengesetzt
with Query_Suchen
do
begin
active := false;
sql.clear;
sql.add(sqlmerker);
ParamCheck := true;
if Edit5.Text <>'
'
then
begin
s := '
%'+ Edit5.Text + '
%';
ParamByName ('
retnr').AsString := s;
end;
if Edit6.Text <>'
'
then
begin
s := '
%'+Edit6.Text + '
%';
ParamByName ('
lieferant').AsString := s;
end;
if Edit7.Text <>'
'
then
begin
s := '
%'+Edit7.Text + '
%';
ParamByName ('
kunde').AsString := s;
end;
if Edit8.Text <>'
'
then
begin
s := '
%'+Edit8.Text + '
%';
ParamByName ('
artikel').AsString := s;
end;
if Edit9.Text <>'
'
then
begin
s := '
%'+Edit9.Text + '
%';
ParamByName ('
artikelnr').AsString := s;
end;
if Edit10.Text <>'
'
then
begin
s := '
%'+Edit10.Text + '
%';
ParamByName ('
fehler').AsString := s;
end;
if Edit11.Text <>'
'
then
begin
s := '
%'+Edit11.Text + '
%';
ParamByName ('
fehlernr').AsString := s;
end;
if Edit12.Text <>'
'
then
begin
s := '
%'+Edit12.Text + '
%';
ParamByName ('
status').AsString := s;
end;
if Edit13.Text <>'
'
then
begin
if (Edit13.Text = '
True')
or (Edit13.Text = '
true')
or (Edit13.Text = '
ja')
or (Edit13.Text = '
Ja')
then ParamByName ('
getauscht').AsBoolean := True;
if (Edit13.Text = '
False')
or (Edit13.Text = '
false')
or (Edit13.Text = '
nein')
or (Edit13.Text = '
Nein')
then ParamByName ('
getauscht').AsBoolean := False;
end;
if Edit14.Text <>'
'
then
begin
ParamByName ('
datum').AsDate := StrToDate(Edit14.Text);
end;
if Edit15.Text <>'
'
then
begin
ParamByName ('
datum').AsDate := StrToDate(Edit15.Text);
end;
if Edit16.Text <>'
'
then
begin
s := '
%'+Edit16.Text + '
%';
ParamByName ('
RMANr').AsString := s;
end;
if Edit17.Text <>'
'
then
begin
s := '
%'+Edit17.Text + '
%';
ParamByName ('
seriennr').AsString := s;
end;
if Edit18.Text <>'
'
then
begin
ParamByName ('
datum').AsDate := StrToDate(Edit18.Text);
end;
active := true;
open;
end;
end;
end;
Nun mein Problem:
Diese Routine lief immer sauber ohne Probleme. Als ich die Anwendung nun auf Netzwerkbetrieb umstellte passierte es, dass die Suchfunktion nach Eingabe der Werte zwar immer noch einwandfrei und schnell läuft, allerdings nach Präsentation dere Suchergebnisse in der DBGrid, kann man erneute Eingaben in den Editfeldern nur noch extrem stark verzögert eingeben. (Also die Buchstaben kommen erst 1-2 Sekunden nach dem Drücken der Tasten). Wenn ich dann die Suchkriterien wieder alle lösche und die Datenbank erneut ohne Suchkriterien öffne, dann läuft alles wieder einwandfrei und man kann erneut suchen.
Ich vermute also, dass nach der Lieferung des Ergebnisses irgendetwas freigegeben werden muss, ich weiß aber nicht was.
Für Eure Hilfe bedanke ich mich im Voraus.
Gruß
Hendrik
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!