AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Darstellung einer Zahl im DBGrid

Ein Thema von khh · begonnen am 27. Mär 2012 · letzter Beitrag vom 30. Mär 2012
Antwort Antwort
Seite 1 von 3  1 23      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 13:25
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:
cast(f.artnr as float) as artnr
eingefügt,da ich der Meinung war der Wertebereich ist so ausreichend.
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?
Karl-Heinz
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:32
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?
Chris
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:39
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?
sorry,
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
Karl-Heinz

Geändert von khh (27. Mär 2012 um 14:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:42
Aber doch nur bei unterschiedlicher Stringlänge, oder täusche ich mich gerade?

[edit] Wie ist es denn ohne Cast und stattdessen mit LPAD?
LPAD(artnr, 20) as artnr [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (27. Mär 2012 um 14:48 Uhr)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:47
Aber doch nur bei unterschiedlicher Stringlänge, oder täusche ich mich gerade?
was meinst du mit unterschiedlicher stringlänge ?
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:49
Damit meine ich, dass 123 nummerisch bewertet größer ist als 42, alphanumerisch aber nicht. Hast Du mein Edit oben gesehen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:51
Also er sagt EAN13 = 13 Ziffern. Ich verstehe gerade nicht warum das fehlerhaft sortiert werden sollte?
Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:52
Wie wäre es damit:
SQL-Code:
SELECT RightString('0000000000000'+ArtNr, 13) AS SortFeld, * FROM EanTabelle
ORDER BY 1
Für die Funktion RightString() muss im Firebird 2.1 Dialekt die passende Funktion nachgeschlagen werden.
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
Andreas

Geändert von shmia (27. Mär 2012 um 14:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:54
Dürfte das nicht mein LPAD von oben sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Darstellung einer Zahl im DBGrid

  Alt 27. Mär 2012, 14:54
Damit meine ich, dass 123 nummerisch bewertet größer ist als 42, alphanumerisch aber nicht. Hast Du mein Edit oben gesehen?
ja, so ist es, und so gefällt es den meisten Kunden nicht.

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
Karl-Heinz

Geändert von khh (27. Mär 2012 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01:40 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