Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Darstellung einer Zahl im DBGrid (https://www.delphipraxis.net/167385-darstellung-einer-zahl-im-dbgrid.html)

DeddyH 27. Mär 2012 14:57

AW: Darstellung einer Zahl im DBGrid
 
Ganz einfach: LPAD füllt links mit Leerzeichen (oder einem optional anzugebenden) bis zur angegebenen Länge auf. Und da das Leerzeichen einen kleineren ASCII-Wert als '0' hat, stimmt anschließend die alphanumerische mit der nummerischen Sortierung überein. Für Details zu der Funktion siehe firebirdsql.org.

khh 27. Mär 2012 15:04

AW: Darstellung einer Zahl im DBGrid
 
Zitat:

Zitat von DeddyH (Beitrag 1158920)
Ganz einfach: LPAD füllt links mit Leerzeichen (oder einem optional anzugebenden) bis zur angegebenen Länge auf. Und da das Leerzeichen einen kleineren ASCII-Wert als '0' hat, stimmt anschließend die alphanumerische mit der nummerischen Sortierung überein. Für Details zu der Funktion siehe firebirdsql.org.

ok, dann muss ich wohl die Stringlänge anpassen, da das Feld an sich schon char(20) ist.

aber weshalb funktioniert cast nach float nicht??

DeddyH 27. Mär 2012 15:28

AW: Darstellung einer Zahl im DBGrid
 
Ich habe den Wertebereich von Firebird-Float nicht im Kopf, aber möglicherweise kommst Du mit Deinen Zahlen da in einen Grenzbereich, wo es ungenau wird (das haben Fließkommazahlen ja leider so an sich).

Iwo Asnet 27. Mär 2012 16:17

AW: Darstellung einer Zahl im DBGrid
 
Sagt mal, ist es nicht ein wenig verwunderlich, wenn ein EAN-Code, der aus ZEICHEN besteht, als FLOAT in einer DB landet? Das ist grenzwertig gefährlich.

DeddyH 27. Mär 2012 16:27

AW: Darstellung einer Zahl im DBGrid
 
Zitat:

ich habe eine EAN13 in einem DB-Feld vom Typ char().
Wo landet da ein Float in der DB? Der Cast war ein Versuch beim Auslesen für die Sortierung.

khh 28. Mär 2012 06:51

AW: Darstellung einer Zahl im DBGrid
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1158939)
Sagt mal, ist es nicht ein wenig verwunderlich, wenn ein EAN-Code, der aus ZEICHEN besteht, als FLOAT in einer DB landet? Das ist grenzwertig gefährlich.


die EAN steht als String in einem 20 Zeichen grossen char()- Feld in der DB

Sir Rufo 28. Mär 2012 08:40

AW: Darstellung einer Zahl im DBGrid
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1158939)
Sagt mal, ist es nicht ein wenig verwunderlich, wenn ein EAN-Code, der aus ZEICHEN besteht, ...

Streng genommen besteht der EAN-Code aus Ziffern ;)

Iwo Asnet 28. Mär 2012 10:11

AW: Darstellung einer Zahl im DBGrid
 
Zitat:

Zitat von Sir Rufo (Beitrag 1159026)
Zitat:

Zitat von Iwo Asnet (Beitrag 1158939)
Sagt mal, ist es nicht ein wenig verwunderlich, wenn ein EAN-Code, der aus ZEICHEN besteht, ...

Streng genommen besteht der EAN-Code aus Ziffern ;)

Strenger genommen besteht der EAN-Code aus Zeichen, die auf die Ziffern beschränkt sind. :mrgreen:

Zitat:

Zitat von khh (Beitrag 1159018)
die EAN steht als String in einem 20 Zeichen grossen char()- Feld in der DB

Und dann wird er als FLOAT gecastet und man wundert sich, das die letzten Stellen flöten gehen?
Zitat:

Zitat von khh (Beitrag 1158911)
aus einer gültigen EAN "4008400401027" wird
4008400388096

Versuche es mit numeric(13), dann bleiben alle Stellen erhalten. Wenn Firebird das kann.

Hier mal der Grund:
Zitat:

Zitat von Firebird 2.0 Online Manual
FLOAT specifies a single-precision, 32-bit datatype with a precision of approximately 7 decimal digits.

Stimmt sogar auffallend.

khh 29. Mär 2012 07:47

AW: Darstellung einer Zahl im DBGrid
 
>> Und dann wird er als FLOAT gecastet und man wundert sich, das die letzten Stellen flöten gehen?

wenn dem so wäre hätte ich die Erklärung die ich suche, dem ist aber nicht so, die letzen Stellen werden durch andere Ziffern "ersetzt" :-(

DeddyH 29. Mär 2012 08:16

AW: Darstellung einer Zahl im DBGrid
 
Ich dachte, mit dem LPAD sei das Problem gestorben :gruebel:


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

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