![]() |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
Code:
Egal wie ich round einstelle, in Flamerobin wird der View immer mit sechs Nachkommastellen angezeigt.
select
Round(BATCHES.OUTPUT_PER_TURN,3) as OUTPUT_GERUNDET, PUMPS.STEP_COUNT, BATCHES.IDENTNO, BATCHES.DRAWING_NO, INTERNAL_ORDER_NO.INTERNAL_ORDER, INTERNAL_ORDER_NO.INTERNAL_ORDER, BATCHES.NUMBER_OF_PUMPS from BATCHES, INTERNAL_ORDER_NO, PUMPS where BATCHES.ORDER_ID = INTERNAL_ORDER_NO.ID and PUMPS.BATCH_ID = BATCHES.ID ; Grüße, Messie |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
|
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
Was für einen Typ hat die Spalte? |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Du kannst Floatingpoint runden, bis der Arzt kommt, dein Problem wird immer wieder auftreten. Eine Zahl 0.001 lässt sich nun einmal nicht genau als FP darstellen, d.h. Du rundest auf 3 Stellen, es kommt aber trotzdem 0.0099999999345 heraus (z.B.).
Nochmal zum Mitschreiben: Floating Point Werte und auf Gleichheit prüfen => geht nicht. Abhilfe: a: In der View dafür sorgen, das wirklich nur 3 Nachkommastellen auftauchen. Dafür kann man eine UDF schreiben und das Ergebnis entweder als BCD (hatten wir das nicht schon?) oder als String formatieren/konvertieren. b: Die gleiche Logik im TDataset als berechnetes Feld anwenden, das programmtechnisch garantiert 3 Nachkommastellen aufweist. Das geht in Delphi nur über einen String. Und dann mit diesem Feld filtern. |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
Zitat:
Grüße, Messie |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
Aber ich würde einfach die Anzahl der Nachkommastellen verringern und nicht nur Runden:
SQL-Code:
select
CAST (Round(BATCHES.OUTPUT_PER_TURN,3) as DECIMAL( 18,3)) as OUTPUT_GERUNDET, PUMPS.STEP_COUNT, BATCHES.IDENTNO, BATCHES.DRAWING_NO, INTERNAL_ORDER_NO.INTERNAL_ORDER, INTERNAL_ORDER_NO.INTERNAL_ORDER, BATCHES.NUMBER_OF_PUMPS from BATCHES, INTERNAL_ORDER_NO, PUMPS where BATCHES.ORDER_ID = INTERNAL_ORDER_NO.ID and PUMPS.BATCH_ID = BATCHES.ID ; |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Super Markus,
das hat geklappt. Vielen Dank! Grüße, Messie |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Wenn du keine so vielen Nachkommastellen benötigst, könntest Du auch die Typen in der Datenbank entsprechend abändern.
|
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Zitat:
Und vor allem: geht das rückwirkend zu ändern? Grüße, Messie |
AW: Float-Werte für Filterung mit Nachkommastellen maskieren
Es würde jeweils der Cast entfallen. Den Typ kannst Du natürlich an die Bedürfnisse anpassen, DECIMAL(18,3) bedeuteu 15 Vor- und 3 Nachkommastellen.
Ob man den Typ entsprechend anpassen kann mustt Du schauen, notfalls über ein den Umweg einer weiteren Spalte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 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