Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StrToFloat bei Datenexport (https://www.delphipraxis.net/209796-strtofloat-bei-datenexport.html)

himitsu 23. Jan 2022 23:00

AW: StrToFloat bei Datenexport
 
Na das ist ja mal zu praktisch.

Sinspin 24. Jan 2022 07:17

AW: StrToFloat bei Datenexport
 
Ich denke du solltest erstmal nachdenken was du überhaupt speichern willst. Für Geldbeträge gibt es andere Datentypen die das Gleitkomma Problem nicht haben.
BCD / Numeric oder in modernen Datenbanken Currency.
Da fällt das ganze gezerre über mysteriös auftauchenden winzigen Beträgen weg.

Jasocul 24. Jan 2022 08:43

AW: StrToFloat bei Datenexport
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1501092)
Zitat:

Zitat von himitsu (Beitrag 1501091)
Sobald man auch nur ein Field vorm Open selbst erstellt, dann muß man alle Fields selbst erstellen/erstellen lassen.

Das ist aber schon etwas veraltet.

Mit FieldOptions.AutoCreateMode := acCombineAlways werden alle Felder angelegt, die nicht statisch sind. FieldOptions.PositionMode steuert, wo die automatisch erzeugten platziert werden, und mit FieldOptions.UpdatePersistent kann man die statischen Felder auch noch an die tatsächliche Datenfeldgröße (z.B. bei Stringfeldern) anpassen.

Gut zu wissen. Danke Uwe

OsCor 24. Jan 2022 08:49

AW: StrToFloat bei Datenexport
 
Zitat:

Zitat von Sinspin (Beitrag 1501096)
Ich denke du solltest erstmal nachdenken was du überhaupt speichern willst. Für Geldbeträge gibt es andere Datentypen die das Gleitkomma Problem nicht haben.
BCD / Numeric oder in modernen Datenbanken Currency.
Da fällt das ganze gezerre über mysteriös auftauchenden winzigen Beträgen weg.

Wer redet denn von Geldbeträgen? Die habe ich mit AsCurrency gespeichert. Oder meinst du, ich soll die Gleitkommawerte als Währung speichern? Das wäre natürlich eine interessante Alternative :-)

@all Ich merke, dass 10 Jahre ohne regelmäßige Nutzung von Delphi bei mir massive Lücken gerissen haben und ich schwer Mühe habe, euch zu folgen: Alles schon mal gehört oder sogar verwendet - irgendwann in grauer Vorzeit. Aber ich hänge mich rein; es wird nur ein paar Tage brauchen.

Gruß
Oswald

Frickler 24. Jan 2022 11:27

AW: StrToFloat bei Datenexport
 
Zitat:

Zitat von mmw (Beitrag 1501090)
dazu muß man die entsprechenden Felder hinzufügen.

Ist doch gar nicht nötig. Nach dem Öffnen der Datenmenge:

Delphi-Quellcode:
TFloatField(ds.FieldByName('feldname')).DisplayFormat := '0.00';

Sinspin 24. Jan 2022 11:37

AW: StrToFloat bei Datenexport
 
Zitat:

Zitat von OsCor (Beitrag 1501098)
Wer redet denn von Geldbeträgen?

Sorry, ich habe dich verwechselt :oops:

Trotzdem würde ich eher mit einem Numeric arbeiten als einer Gleitkommazahl. Hängt natürlich von der Anwendung ab, aber selbst wenn man extrem kleine Zahlen hat, die man exakt speichern muss, ist Numeric das besser.

Rolf Frei 24. Jan 2022 12:11

AW: StrToFloat bei Datenexport
 
Schreib die von Frickler erwähnte Zeile im OnAfterOpen Event des Datasets und alles funktioniert so wie du willst.

OsCor 24. Jan 2022 12:39

AW: StrToFloat bei Datenexport
 
Das habe ich nun wirklich nicht zu hoffen gewagt! Die Zeile von Frickler im ADOTable1AfterOpen-Ereignis (nicht OnAfterOpen), wie von Rolf Frei vorgeschlagen, und das funktioniert.
Von alleine kommt man da ja nie drauf…

Auch, wenn sich dieses eine Teilproblem auf relativ simple Weise hat lösen lassen, war schon bei den Posts vorher das eine oder andere Aha-Erlebnis (nach dem Motto: Bist du nicht der…, wir haben uns ja ewig nicht gesehen :-) ) dabei.

Danke!
Oswald

OsCor 24. Jan 2022 13:03

AW: StrToFloat bei Datenexport
 
Nachsatz:
Gerade erst gemerkt: DisplayFormat steuert lediglich die Darstellung der Zahlen beim DBGrid (also vermutlich bei datensensitiven Controls). Nicht sensitive Editfelder, die man füllt, muss man selber formatieren.

Gruß
Oswald

Delphi.Narium 24. Jan 2022 13:53

AW: StrToFloat bei Datenexport
 
DisplayFormat ist für die Anzeige in den datensensitiven Elementen. TEdit gehört nicht dazu.

Es gibt aber auch noch TMaskEdit. Da kann man eine Anzeigemaske für die Darstellung im Edit angeben. Wäre das 'ne Alternative?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Seite 2 von 3     12 3      

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