![]() |
Abfrageergebnis aktualisieren
Hallo,
in meinem Programm fülle ich mit dem folgenden Code eine Checklistbox:
Code:
In der Abfrage qryCustList steht folgender SQL-Befehl:
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;
Code:
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;).
SELECT strShortName
FROM SD_CUST.DB ORDER BY strShortName; Weiss jemand wie dieses Verhalten zustandekommt und wie man es abschaltet? Danke Frank |
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 |
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:
gruß, harrybo
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; |
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 |
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 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz