Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrageergebnis aktualisieren (https://www.delphipraxis.net/1382-abfrageergebnis-aktualisieren.html)

FBrust 19. Nov 2002 20:43


Abfrageergebnis aktualisieren
 
Hallo,

in meinem Programm fülle ich mit dem folgenden Code eine Checklistbox:

Code:
    with dmQueries.qryCustList do begin
      if not Active then
         Active := True;
      while not Eof do begin
        clbCust.Items.Add(FieldByName('strShortName').AsString);
        Next;
      end;
      Active := False;
    end;
In der Abfrage qryCustList steht folgender SQL-Befehl:
Code:
SELECT strShortName
FROM SD_CUST.DB
ORDER BY strShortName;
Das Problem ist folgendes: Wenn ich jetzt in die Tabelle SD_CUST.DB einen neuen Datensatz schreibe, zeigt das Abfrageergebnis nur die bisher vorhandenen Werte. Erst wenn ich das Programm beende und neu aufrufe, erscheint auch der neue Wert in der Checklistbox und das obwohl die Abfrage nach Einlesen in die Checklistbox abgeschaltet wird (Active := False;).

Weiss jemand wie dieses Verhalten zustandekommt und wie man es abschaltet?


Danke
Frank

LCS 22. Nov 2002 12:08

Hi
mit was für einer Datenbank arbeitest du denn? Für mich sieht das so aus, als würden da zwei getrennte Transaktionen laufen. Auch wenn die Abfrage geschlossen und neu gestartet wird, kann sie die neu eingetragenen Datensätze erst sehen, wenn deren Transaktion betätigt und abgeschlossen wurde. Das passiert normalerweise beim Beenden, daher das merkwürdige Verhalten

Gruss Lothar

harrybo 26. Nov 2002 13:23

Hi FBrust,

möglicherweise öffnest Du an anderer Stelle das Query-Object. Um sicher zu gehen, dass wirklich neu eingelesen wird kann man folgendes schreiben:
Code:
    with dmQueries.qryCustList do begin
      if Active then
        Close;
      Active := True;
      while not Eof do begin
        clbCust.Items.Add(FieldByName('strShortName').AsString);
        Next;
      end;
      Close;
    end;
gruß, harrybo

FBrust 26. Nov 2002 19:52

Hallo,

danke für Eure Antworten.

@LCS: Die Datenbank ist BDE, keine Transaktionen, nix, wenn man einen neuen Kunden eingegeben hat, erfolgt ein Post auf die Tabelle, und sie wird deaktiviert (Active := False)

@Harrybo: Ich hab die Query vor dem Einlesen in die Checklistbox geschlossen und wieder aktiviert (wie in Deinem Beispiel genannt): ohne Erfolg...die Abfrage kriegt die Änderungen erst mit, wenn das Programm neu gestartet wird

Mal sehen, vielleicht gehe ich direkt über die Tabelle...


Grüsse
Frank

harrybo 4. Dez 2002 13:06

Hi FBrust, schließt Du Deine Abfrage denn nun mit Close oder weiterhin mit Active := false? Close schließt verbindlich die Abfrage und setzt selbst intern Active := false.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz