Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TSQLQuery und CalcFields-Event, erster Datensatz leer (https://www.delphipraxis.net/2460-tsqlquery-und-calcfields-event-erster-datensatz-leer.html)

JoeBar 24. Jan 2003 12:06


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

JoeBar 24. Jan 2003 13:10

Workaround:

Im Event AfterOpen noch mal manuell die Methode CalcField aufrufen, dann sind die persistenten Felder gefüllt.

Kennt jemand was eleganteres ?

Gruß
JoeBar

MrSpock 28. Jan 2003 06:49

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.

JoeBar 30. Jan 2003 08:39

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