Moin!
Ich habe ein paar StringGrids, die ich mittels Live-Bindings an jeweils eine
Query-Komponente angebunden habe. Nach Programmstart wird auch alles brav in den Grids angezeigt.
Leider aber scheinen Änderungen in der
DB, die zur Laufzeit von außerhalb passieren, nicht geupdated zu werden, selbst wenn ich in einem Timer periodisch die Queries refreshe. Eine Refresh oder UpdateData Methode o.ä. habe ich für die BindSource und BindingsList nicht finden können.
Wie muss man das machen?
(Delphi 10.2.3, MyDAC)
Edit: Aha! Das geht an sich schon, allerdings werden Lookup-Felder nicht mit aktualisiert. Also kein Problem mit LiveBindings, sondern die Frage, die man bei einem
Query.Refresh auch die darin enthaltenen Lookup-Felder updaten kann!
TMyQuery.AutoCalcFields ist auf True, aber das macht sie offenbar nicht.
(Leider passt der Titel jetzt überhaupt nicht mehr
)
Edit 2: Ein .Refresh scheint nicht zu reichen, man muss die
Query schließen und wieder öffnen. Bischen nervig, weil man dann immer den Cursor in den Grids selbst auf den zuletzt selektierten Datensatz bringen muss. Ich fürchte das wird spätestens dann eklig, wenn diese voll genug sind dass man darin scrollen muss. Daher würde mich eine andere Lösung nach wie vor sehr interessieren!
Edit 3: Thema ist durch. Habe alle Lookup-Felder durch joins in meinen Abfragen ersetzt. Diese werden bei einem Refresh wenigstens zuverlässig geupdated. Es kam nämlich noch ein anderes Problem dazu: Open/Close einer
Query mit Lookups führt dazu, dass auch die referenzierten Datasets beeinflusst wurden - war ich gerade dabei ein solches zu bearbeiten, oder habe grad frisch eine Zeile eingefügt aber noch nicht geposted, wurde ich durch das Open/Close der anderen
Query prompt aus dem Edit-Mode geworfen. (Und das mit dem Scrollen war natürlich auch ein Problem. Die Grids sind immer wieder an den Anfang geworfen worden.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)