Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Aggregated Field summiert falsch (https://www.delphipraxis.net/166542-aggregated-field-summiert-falsch.html)

Rainer Wolff 17. Feb 2012 13:53

Datenbank: Firebird • Version: 2.5 • Zugriff über: dbx

Aggregated Field summiert falsch
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich versuche mich gerade an aggregated fields im Clientdataset. Wenn ich bei meinen Float-Datenbankfeldern, die als TSingleint im Dataset landen, eine Summe bilden will, bekomme ich einen Wert wie 5,68248093194E-315 zurück, obwohl normale Zahlen in den Feldern stehen. Die selbe Aufsummierung über ein Integerfeld funzt hingegen. Im Anhang habe ich einen Screenshot beigefuegt (numerototal und qtotal sind die int bzw. float-summen von numerofusion und quantite1)
Kennt jemand dieses Problem?

Gruß Rainer

p80286 17. Feb 2012 14:20

AW: Aggregated Field summiert falsch
 
hast Du mal versucht die Darstellung zu ändern?
z.B.
Code:
To_Char(mysum,'999999.99999')
(ich gehe mal davon aus, daß die Grundlage Deiner Anzeige eine Query ist)

Gruß
K-H

Rainer Wolff 20. Feb 2012 14:47

AW: Aggregated Field summiert falsch
 
Ich weiss nicht, an welcher Stelle ich das to_char jetzt anbringen soll?

Min, max, count funktionieren, aber sum, avg bringen abstruse Werte

Rainer Wolff 20. Feb 2012 15:28

AW: Aggregated Field summiert falsch
 
Inzwischen habe ich in der dbclient.pas folgenden Code gefunden:

Code:
function AggValueAsVariant(Agg: TAggregate; Buffer: Pointer): Variant;
var
  C: Currency;
begin
  case Agg.DataType of
    ftByte:
      Result := Byte(Buffer^);

   ....

    TFieldType.ftSingle:
      Result := Single(Buffer^);
    ftFloat:
      Result := Double(Buffer^);
    ftBCD, ftFMTBcd:
.....
An der Stelle wird der Code fuer ftFloat ausgefuehrt, obwohl mein Feld vom Typ TSingleField ist. Und sobald ich statt Sum als Aggregatfunktion Min oder Max wähle, wird mein Feldtyp ftSingle und die Aggregatfunktion stimmt.

Aber sonst bin ich im VCL-Code noch nicht durchgestiegen, wann welcher Feldtyp gewählt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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