AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Float-Werte für Filterung mit Nachkommastellen maskieren
Thema durchsuchen
Ansicht
Themen-Optionen

Float-Werte für Filterung mit Nachkommastellen maskieren

Ein Thema von messie · begonnen am 10. Nov 2013 · letzter Beitrag vom 26. Apr 2015
Antwort Antwort
Seite 2 von 3     12 3      
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#11

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 19. Apr 2015, 20:59
Zeige mal die Abfrage.
Meinst Du den View?
Code:
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
;
Egal wie ich round einstelle, in Flamerobin wird der View immer mit sechs Nachkommastellen angezeigt.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 19. Apr 2015, 21:03
Zeige mal die Abfrage.
Meinst Du den View?
Nein, die View
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 19. Apr 2015, 21:22
Zitat:
Egal wie ich round einstelle, in Flamerobin wird der View immer mit sechs Nachkommastellen angezeigt.
Nur angezeigt oder auch nicht gerundet?
Was für einen Typ hat die Spalte?
Markus Kinzler
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 20. Apr 2015, 07:34
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.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#15

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 20. Apr 2015, 18:12
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.).
Na ja, Delphi kann das schon. Ist da auch ein String unter der Haube?

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.
Die View scheint die drei Nachkommastellen zu können. Wohl aber nicht die Filterfunktion des Grids. Daher ist das wahrscheinlich auch nicht in der Dokumentation von Devart beschrieben. Ich weiß auch nicht, ob bei IBDAC Quellen dabei sind, ich befürchte nicht.

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 20. Apr 2015, 18:15
Zitat:
Die View scheint die drei Nachkommastellen zu können. Wohl aber nicht die Filterfunktion des Grids. Daher ist das wahrscheinlich auch nicht in der Dokumentation von Devart beschrieben. Ich weiß auch nicht, ob bei IBDAC Quellen dabei sind, ich befürchte nicht.
Das kommt darauf an, ob du die Sourcen gekauft hast oder nicht. Die vom Grid sind aber glaube ich auf jeden Fall dabei.

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
;
Markus Kinzler
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#17

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 26. Apr 2015, 17:10
Super Markus,

das hat geklappt.

Vielen Dank!

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 26. Apr 2015, 19:22
Wenn du keine so vielen Nachkommastellen benötigst, könntest Du auch die Typen in der Datenbank entsprechend abändern.
Markus Kinzler
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#19

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 26. Apr 2015, 19:28
Wenn du keine so vielen Nachkommastellen benötigst, könntest Du auch die Typen in der Datenbank entsprechend abändern.
Ok, da habe ich mit Float gearbeitet. Würde als Typ denn ein kleinerer DECIMAL gehen? Was würde das bei der Geschwindigkeit ausmachen?

Und vor allem: geht das rückwirkend zu ändern?

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Float-Werte für Filterung mit Nachkommastellen maskieren

  Alt 26. Apr 2015, 19:32
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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