Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Berechnetes Feld vom Typ Boolean erstellen und ändern (https://www.delphipraxis.net/76345-berechnetes-feld-vom-typ-boolean-erstellen-und-aendern.html)

viktorhugo 2. Sep 2006 21:43

Datenbank: MySQL • Zugriff über: ODBC

Berechnetes Feld vom Typ Boolean erstellen und ändern
 
Hallo,

ich habe ein berechnetes Feld vom Typ Boolean erstellt und möchte in Abhängigkeit vom anderem Feld
dem Werte true oder false zuweisen. Laut OH muß ich im OnCalcFields die Werte zuweisen.
Es wird aber nur beim ersten Datensatz der Wert geändert. AutoCalcFields habe ich probeweise mit true oder false ausprobiert
...
Delphi-Quellcode:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
  if Table1HasChildrens.AsInteger = 0 then
     Table1B_HasChildrens.AsBoolean := false
  else
    Table1B_HasChildrens.AsBoolean := true;
end;
..
Was mache ich falsch?

Grüße

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

rider 3. Sep 2006 08:47

Re: Berechnetes Feld vom Typ Boolean erstellen und ändern
 
Zitat:

Zitat von viktorhugo
Was mache ich falsch?

AutoCalcFields muss auf True gesetzt werden, sonst wird gar nichts berechnet.
Den Code würde ich so schreiben:
Delphi-Quellcode:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
  Table1B_HasChildrens.AsBoolean := Table1HasChildrens.AsInteger <> 0;
end;
Allerdings musst du beachten, dass die AutoCalc Felder nur dann berechnet werden, wenn sie auch benötigt werden.
Also z.B. zur Anzeige in einem Grid werden nur die sichtbaren Zeilen berechnet.

Wie hast du denn festgestellt, dass nur der erste Datensatz berechnet wird?

viktorhugo 3. Sep 2006 11:30

Re: Berechnetes Feld vom Typ Boolean erstellen und ändern
 
Zitat:

AutoCalcFields muss auf True gesetzt werden, sonst wird gar nichts berechnet.
Das habe ich ja bereits geschrieben.
Zitat:

Den Code würde ich so schreiben:
natürlich eleganter, aber für die problemlösung wurscht
Zitat:

Allerdings musst du beachten, dass die AutoCalc Felder nur dann berechnet werden, wenn sie auch benötigt werden.
Also z.B. zur Anzeige in einem Grid werden nur die sichtbaren Zeilen berechnet.
Das Boolean feld wird nicht angezeigt, es wird intern in der Komponente verwendet.
Zitat:

Wie hast du denn festgestellt, dass nur der erste Datensatz berechnet wird?
1.Im Debugger ging er nur einmal in den Event rein
2.das boolean feld wird intern für die Komponente dbtreeview verwendet, als Steuerung für Parent-Child Beziehung. Ausgehend von der Komponente müssten dann auch alle Child's angezeigt werden, ist aber nicht der Fall

Grüße

rider 3. Sep 2006 11:38

Re: Berechnetes Feld vom Typ Boolean erstellen und ändern
 
Zitat:

Zitat von viktorhugo
Das Boolean feld wird nicht angezeigt, es wird intern in der Komponente verwendet.

Ich vermute, hier liegt der Hund begraben. Kannst du mal ein Stück Code reinstellen, wie du dann auf dieses berechnete Feld zugreifst?
Wie gesagt, die berechneten Felder werden quasi on demand berechnet. Du kannst nicht davon ausgehen, dass alle Datensätze durchgehend berechnet werden.

viktorhugo 3. Sep 2006 12:11

Re: Berechnetes Feld vom Typ Boolean erstellen und ändern
 
Hallo rider,

ich habe DBGrid angeschlossen und es sind tatsächlich alle boolean Felder richtig geändert.
Also muß ich tiefer greifen, weil die Komponente habe ich irgendwo im www runtergeladen und wollte
einsetzen bzw. ausprobieren.
Erst mal Danke!

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr.

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