Einzelnen Beitrag anzeigen

GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

Eingabe in Edit langsam nach suche in Netzwerk Datenbank

  Alt 8. Nov 2006, 17:18
Datenbank: Paradox • Version: 7 • Zugriff über: Query
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!
  Mit Zitat antworten Zitat