![]() |
TSQLQuery und CalcFields-Event, erster Datensatz leer
Hallo,
ich benutze eine TSQLQuery zum Zugriff auf eine Oracle-DB. Das Projekt soll von BDE (TQuery) aud dbExpress (TSQLQuery) umgestellt werden, die Abfragen an sich sind also in Ordnung. Im Query-Objekt gibt es zusätzliche berechnete Felder welche im CalcField-Event gefüllt werden sollen. Dabei habe ich folgendes Problem: Nach Öffnen der Abfrage laufe ich durch die Ergebnisdatenmenge und der CalcField-Event wird ausgelöst, nur ist der erste Datensatz immer leer. D.h., der Datensatz ist nicht leer (auf der DB), nur sowohl über persistente Felder, als auch über FieldByName steht im ersten Datensatz nichts drin, dh. wenn ich das Ergebnis in einem Grid darstelle sind die berechneten Felder des ersten Datensatzes leer, die nicht-berechneten Felder werden jedoch normal angezeigt. Kennt jemand das Problem ? Für Eure Hilfe wäre ich wirklich dankbar. Gruß Joe Bar |
Workaround:
Im Event AfterOpen noch mal manuell die Methode CalcField aufrufen, dann sind die persistenten Felder gefüllt. Kennt jemand was eleganteres ? Gruß JoeBar |
Hallo JoeBar,
wenn ein Versuch einer Antwort auch etwas später kommt :mrgreen: , zunächst einmal herzlich willkommen im Delphi Praxis Forum. Zu deinem Problem. Es sollte eigentlich gar nicht nötig sein, die Datenmenge zu durchlaufen. Wenn die Eigenschaft AutoCalcFields auf TRUE steht, wird schon beim öffnen der Datenmenge und mein normalen "Abruf" der Daten das OnCalcField Event ausgelöst. Überprüfe doch einmal den Wert der AutoCalcFields Eigenschaft. |
Hallo Mr Spock,
danke für die nette Begrüßung im Forum. Zu Deiner Antwort auf "mein" Problem, für das ich ja auch ein Workaround gepostet habe: Mit meinem "laufe ich durch die Ergebnisdatenmenge" meinte ich die "ganz normale" Bearbeitung der Daten. Das Problem bleibt aber, im gesamten Projekt welches ich auf dbExpress umstelle (> 200.000 Zeilen), darf ich in allen Abfragen die einen OnCalcField-Handler haben den obigen Workaround einsetzen... Gruß JoeBar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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