Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   CalcFields von Dataset funktioniert nicht (https://www.delphipraxis.net/184708-calcfields-von-dataset-funktioniert-nicht.html)

Luckner 16. Apr 2015 10:33

Datenbank: Firebird • Version: 2.1 • Zugriff über: Dataset

CalcFields von Dataset funktioniert nicht
 
Hallo,
ich benutze in einigen Datasets die Eigenschaft OnCalcFields. Bis jetzt hat es gut funktioniert. In einem neuem Modul greife ich ebenfalls mit einem Dataset auf eine Tabelle. Im Dataset (wie üblich) habe ich ein berechnetes Feld 'NUMMER :Integer' erstellt und in der Eigenschaft CalcFields von diesem Dataset ebenfalls

Delphi-Quellcode:
procedure TDataModule8.IBDataSetAuswaertungCalcFields(DataSet: TDataSet);
begin
 with IBDataSetAuswaertung do
   Begin
     FieldValues['NUMMER'] := RecNo;
   end;
end;
eingefügt. Dieses Feld zeige ich in einem DBGrid an. Aber es funktioniert nicht. Habe jetzt alle Datasets miteinander vergliechen, aber keinen Unterschied gefunden. Hat Jemand eine Idee woran es liegen kann?

Danke, Luckner

himitsu 16. Apr 2015 10:39

AW: CalcFields von Dataset funktioniert nicht
 
Erstmal was zur Fehlervermeidung:
Rate mal, warum diese Methode einen Parameter besitzt. :stupid:


Haltepunkt in die Event-Methode: Wird sie auch aufgerufen?
Das Event hängt auch wirklich an OnCalcFields dran?

Luckner 16. Apr 2015 11:20

AW: CalcFields von Dataset funktioniert nicht
 
Hallo himitsu,
kapier nicht so ganz, was Du meinst.
Luckner

Sir Rufo 16. Apr 2015 12:25

AW: CalcFields von Dataset funktioniert nicht
 
Zitat:

Zitat von Luckner (Beitrag 1297947)
Hallo himitsu,
kapier nicht so ganz, was Du meinst.
Luckner

Er meint: "Hast du den Debugger benutzt und welche Erkenntnisse hast du daraus gewonnen?"

Er meinte zudem noch, dass du in der Methode
Delphi-Quellcode:
procedure TDataModule8.IBDataSetAuswaertungCalcFields( DataSet: TDataSet );
schon frei Haus die entsprechende Referenz auf das DataSet erhältst und fragt sich, warum du diese Referenz nicht benutzt?
Delphi-Quellcode:
procedure TDataModule8.IBDataSetAuswaertungCalcFields(DataSet: TDataSet);
begin
  DataSet.FieldValues['NUMMER'] := DataSet.RecNo;
end;

DeddyH 16. Apr 2015 12:29

AW: CalcFields von Dataset funktioniert nicht
 
Und das heißt letzten Endes:
Delphi-Quellcode:
procedure TDataModule8.IBDataSetAuswaertungCalcFields(DataSet: TDataSet);
begin
  DataSet{Das ist der Parameter}.FieldValues['NUMMER'] := DataSet{Das ist auch der Parameter}.RecNo;
end;
Und hier mal einen Haltepunkt setzen und schauen, ob das Ereignis überhaupt ausgelöst wird, d.h. das Programm im Debugger auch anhält.

Luckner 16. Apr 2015 12:39

AW: CalcFields von Dataset funktioniert nicht
 
Hallo sir Rufo,

Zitat:

Er meint: "Hast du den Debugger benutzt und welche Erkenntnisse hast du daraus gewonnen?"
Weil ich den Debugger noch nicht richtig behersche:(.

Zitat:

Er meinte zudem noch, dass du in der Methode procedure TDataModule8.IBDataSetAuswaertungCalcFields( DataSet: TDataSet ); schon frei Haus die entsprechende Referenz auf das DataSet erhältst und fragt sich, warum du diese Referenz nicht benutzt?
Ja, dachte ich mir schon, dass Das nicht so richtig ist, aber bei den anderen Datasets hats funktioniert und deshalb hatte ich Das nicht als Fehlerquelle betrachtet. Was müsste ich denn als Referenz reinschreiben und wo? Werde mich auch gleich hier im Forum noch einmal umschauen.

Luckner.

DeddyH 16. Apr 2015 12:41

AW: CalcFields von Dataset funktioniert nicht
 
Es steht doch jetzt schon 2 Mal da oben, wie und wo :)

Sir Rufo 16. Apr 2015 12:44

AW: CalcFields von Dataset funktioniert nicht
 
Zitat:

Zitat von Luckner (Beitrag 1297960)
Zitat:

Er meinte zudem noch, dass du in der Methode procedure TDataModule8.IBDataSetAuswaertungCalcFields( DataSet: TDataSet ); schon frei Haus die entsprechende Referenz auf das DataSet erhältst und fragt sich, warum du diese Referenz nicht benutzt?
Ja, dachte ich mir schon, dass Das nicht so richtig ist, aber bei den anderen Datasets hats funktioniert und deshalb hatte ich Das nicht als Fehlerquelle betrachtet. Was müsste ich denn als Referenz reinschreiben und wo? Werde mich auch gleich hier im Forum noch einmal umschauen.

Luckner.

Niemand sagt, dass es falsch ist ... nur ungeschickt, wenn ich schon mundgerecht etwas vorgesetzt bekomme. Dann kann man auch die Komponente umbenennen oder diese Methode mehrfach verwenden, weil ich mich dort drinnen auf den Parameter beziehe.

Luckner 16. Apr 2015 12:50

AW: CalcFields von Dataset funktioniert nicht
 
Habe ich jetzt umgeschrieben.
Delphi-Quellcode:
procedure TDataModule8.IBDataSetAuswaertungGridCalcFields(DataSet: TDataSet);
begin
  IBDataSetAuswaertungGrid.FieldValues['NUMMER'] := IBDataSetAuswaertungGrid.RecNo;
end;
Kein Erfolg. Komisch, als ob diese Prozedur hier nicht angestossen wird. Bei den Anderen funktioniert es. Irgendwie sehe ich vor lauter Wald, die Bäume nicht.:?

himitsu 16. Apr 2015 12:51

AW: CalcFields von Dataset funktioniert nicht
 
Zitat:

Niemand sagt, dass es falsch ist ...
Jupp, genauso funktioniert es ja auch (meistens), wenn man in TForm1 auf die Variable Form1 zugreift.
Bzw.
Delphi-Quellcode:
with DataModule8.IBDataSetAuswaertung do
würde eventuell auch funktionieren, aber dennoch macht man sowas "besser" nicht.


Bezüglich Debugger wurde ja schon so Einiges genannt.
Besser sich damit mal auseinanderzusetzen, denn du kannst da schneller und vorallem besser/leichter nach Problemen suchen, als wir, die wir nur einen Bruchteil deines Codes kennen.
Zitat:

Komisch, als ob diese Prozedur hier nicht angestossen wird.
Genau deswegen sollst du das ja mal prüfen. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.
Seite 1 von 2  1 2      

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