![]() |
Darstellung einer Zahl im DBGrid
hallo zusammen,
ich habe eine EAN13 in einem DB-Feld vom Typ char(). Funktioniert soweit wunderbar. Die Daten werden im DBGrid ordentlich dargestellt. Allerdings werden diese EANs auch alphanummerisch sortiert. Mein Versuch die Nummern numerisch zu sortieren scheitert bisher :-( Ich habe im SQl-Statement ein
Code:
eingefügt,da ich der Meinung war der Wertebereich ist so ausreichend.
cast(f.artnr as float) as artnr
Formatiert wird die GRID-Ausgabe mit '############0' Leider wird so aus einer gültigen EAN "4008400401027" die formatierte Zahl 4008400388096 :-( Hat hier jemand ne Erklärung? |
AW: Darstellung einer Zahl im DBGrid
Welche DB Engine verwendest du denn? SQL ist ziemlich vielfältig ;)
Abgesehen davon, wie kann denn eine EAN falsch sortiert werden? Selbst wenn es nicht numerisch ist? |
AW: Darstellung einer Zahl im DBGrid
Zitat:
firebird 2.1 zugriff über ZEOS naja, ist eben ein Unterschied ob numerisch oder alphanumerisch sortiert wird. EDIT: ibexpert kommt zum gleichen Ergebnis, aus einer gültigen EAN "4008400401027" wird 4008400388096 |
AW: Darstellung einer Zahl im DBGrid
Aber doch nur bei unterschiedlicher Stringlänge, oder täusche ich mich gerade?
[edit] Wie ist es denn ohne Cast und stattdessen mit LPAD?
SQL-Code:
[/edit]
LPAD(artnr, 20) as artnr
|
AW: Darstellung einer Zahl im DBGrid
Zitat:
|
AW: Darstellung einer Zahl im DBGrid
Damit meine ich, dass 123 nummerisch bewertet größer ist als 42, alphanumerisch aber nicht. Hast Du mein Edit oben gesehen?
|
AW: Darstellung einer Zahl im DBGrid
Also er sagt EAN13 = 13 Ziffern. Ich verstehe gerade nicht warum das fehlerhaft sortiert werden sollte?
|
AW: Darstellung einer Zahl im DBGrid
Wie wäre es damit:
SQL-Code:
Für die Funktion RightString() muss im Firebird 2.1 Dialekt die passende Funktion nachgeschlagen werden.
SELECT RightString('0000000000000'+ArtNr, 13) AS SortFeld, * FROM EanTabelle
ORDER BY 1 ORDER BY 1 bedeutet es wird nach dem 1. Feld sortiert. Eventuell muss zusätzlich noch die RTrim()-Funktion verwendet werden, weil ein Char(13)-Feld wahrscheinlich anhängende Leerzeichen haben kann
SQL-Code:
SELECT RightString('0000000000000'+RTrim(ArtNr), 13) AS SortFeld, * FROM EanTabelle
ORDER BY 1 |
AW: Darstellung einer Zahl im DBGrid
Dürfte das nicht mein LPAD von oben sein?
|
AW: Darstellung einer Zahl im DBGrid
Zitat:
LPAD funktioniert, ich danke dir. Kannst du mir das vieleicht noch erklären? Muss mich korrigieren, die Sortierung ist mit LPAD auch alphanumerisch, kann ich mir also sparen :-( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz