Einzelnen Beitrag anzeigen

GoTo0815

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

Re: Eingabe in Edit langsam nach suche in Netzwerk Datenbank

  Alt 9. Nov 2006, 15:10
Hallo @ all,


@hoppsen: Wo sollte ich denn ein Close einbauen? Dann zeigt mein Grid doch nichts mehr an, oder?

@marabu: Ich verstehe Deinen Einwand, allerdings wird die Routine ja immer durchlaufen, ob nun der SQL Text = Select * From DATABASE lautet oder der SQL TEXT wesentlich länger ist.
Die Verlangsamung der Eingabe geschieht erst dann, wenn eine Abfrage mit Where gemacht wurde. Was doch eigentlich mit meiner ONKEYPRESS Routine nichts zu tun hat, da die ja nur dann etwas ausführt, wenn Enter gedrückt wurde.

@hoika:
Delphi-Quellcode:
procedure TForm1.FindSQL(Sender: TObject);
var setzmerker :boolean;
begin
 setzmerker:= False;
 sqlmerker := 'SELECT * FROM retouren ';
 if Edit5.Text <>'then
  begin
    Sqlmerker := sqlmerker + 'WHERE (Retourennummer LIKE :retnr) ';
    setzmerker := True;
  end;
 if Edit6.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER(Lieferant) LIKE UPPER (:lieferant) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER(Lieferant) LIKE UPPER (:lieferant) ';
      setzmerker := True;
    end;
  end;
  if Edit7.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER (Kunde) LIKE UPPER (:kunde) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER (Kunde) LIKE UPPER (:kunde) ';
      setzmerker := True;
    end;
  end;
  if Edit8.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER(Artikelbezeichnung) LIKE UPPER (:artikel) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER (Artikelbezeichnung) LIKE UPPER(:artikel) ';
      setzmerker := True;
    end;
  end;
  if Edit9.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Artikelnummer LIKE :artikelnr) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Artikelnummer LIKE :artikelnr) ';
      setzmerker := True;
    end;
  end;
  if Edit10.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER (Fehlerbeschreibung) LIKE UPPER (:fehler) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER (Fehlerbeschreibung) LIKE UPPER (:fehler) ';
      setzmerker := True;
    end;
  end;
  if Edit11.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Fehlernummer LIKE :fehlernr) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Fehlernummer LIKE :fehlernr) ';
      setzmerker := True;
    end;
  end;
  if Edit12.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Status LIKE :status) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Status LIKE :status) ';
      setzmerker := True;
    end;
  end;
  if (Edit13.Text = 'True') or (Edit13.Text = 'true') or (Edit13.Text = 'ja') or (Edit13.Text = 'Ja')
      or (Edit13.Text = 'False') or (Edit13.Text = 'false') or (Edit13.Text = 'nein') or (Edit13.Text = 'Nein') then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Getauscht = :getauscht) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Getauscht = :getauscht) ';
      setzmerker := True;
    end;
  end;
  if Edit14.Text <>'then
  begin
    Edit15.Text :='';
    Edit18.Text :='';
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum <= :datum) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Datum <= :datum) ';
      setzmerker := True;
    end;
  end;
  if Edit15.Text <>'then
  begin
    Edit18.Text := '';
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum >= :datum) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Datum >= :datum) ';
      setzmerker := True;
    end;
  end;
  if Edit16.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER (RMANummer) LIKE UPPER (:RMANr) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER (RMANummer) LIKE UPPER (:RMANr) ';
      setzmerker := True;
    end;
  end;
  if Edit17.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND UPPER (Seriennummer) LIKE UPPER (:seriennr) else
    begin
      sqlmerker := sqlmerker + 'WHERE UPPER(Seriennummer) LIKE UPPER (:seriennr) ';
      setzmerker := True;
    end;
  end;
  if Edit18.Text <>'then
  begin
    if setzmerker then Sqlmerker := sqlmerker + 'AND (Datum = :datum) else
    begin
      sqlmerker := sqlmerker + 'WHERE (Datum = :datum) ';
      setzmerker := True;
    end;
  end;
end;

Der Fehler tritt aber bereits nach einer einzigen Eingabe in ein Editfeld (nach dem ENTER) auf.
Dann lautet der SQL TEXT nur:
Select * From retouren WHERE UPPER (Kunde) LIKE UPPER (:kunde)

Drücke ich dann auf einen Button der mir wieder die SQL = 'Select * From retouren ' setzt, dann geht auch die Eingabe wieder schnell.

Meiner Meinung läuft da etwas im Hintergrund was durch die eingeschränkte Suche ausgelöst wird.
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat