AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

Ein Thema von Hausmarke · begonnen am 16. Apr 2013 · letzter Beitrag vom 17. Apr 2013
Antwort Antwort
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#1

DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 16. Apr 2013, 10:21
Hallo ForenMember,

ich möchte in einem cxGrid eine mit Zahlen gefüllte Spalte sortieren.
Soweit funktioniert dies auch, jedoch sortiert er die Zahl "11" vor die zahl "2".
Sicherlich kann man die Zahl mit Nullen auffüllen, jedoch ist die frage was man macht, wenn aus dem 2 stelligen Zahlenkreis ein dreistelliger wird...und aus diesem irgendwann eine vierstellige Zahl?
Gibt es die Möglichkeit dieses korrekt zu sortieren ohne alle zahlen auf die gleiche Zeichenanzahl zu korrigieren?

besten dank für eure Vorschläge
  Mit Zitat antworten Zitat
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#2

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 16. Apr 2013, 10:52
okay ich habe die Lösung
der Datentyp der für diese Spalte in der DB hinterlegt war, war ein VarChar.
Da es sich dabei um eine Rechnungsnummer handelt, bin ich anfänglich davon ausgegangen das auch Buchstaben darin enthalten sein könnten.
Sollte dem so sein, habe ich dafür bereits eine Lösung und konnte so den Datentyp nun in Integer ändern.
Wodurch nun auch das Sortieren korrekt funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 16. Apr 2013, 14:00
Deine Lösung würde mich jetzt schon interessieren. Auftrags- und Rechnungsnummern sind im allgemeinen keine Zahlen, sondern Strings, die aus Ziffern (und Buchstaben) gebildet werden. Da ist die Sortierung von 2... hinter 11... vollkommen richtig.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 16. Apr 2013, 16:11
Auftrags- und Rechnungsnummern sind im allgemeinen keine Zahlen, sondern Strings, die aus Ziffern (und Buchstaben) gebildet werden.
Wobei man normalerweise Nummernkreise mit 6 bis 12 Stellen verwendet und um dem Sortierproblem zu begegnen mit Vornullen arbeitet.
Code:
00000001 ... 00000002 ... 00000003 ...
Wenn man diese Auftrags- und Rechnungsnummern nicht als Nummer sondern als String speichert hat man mehr Freiheiten.
Allgemein fährt man besser, wenn man diese "Nummern" als Identifikationsstring betrachtet.
Man könnte z.B. Testaufträge mit dem Buchstaben T beginnen lassen oder man kann eine Filialnummer vorneanstellen falls sich der Betrieb vergrössert.

Bei der Eingabe von Nummern, z.B. für die Auswahl eines best. Auftrags, sorgt die Software dafür, dass man die Nummern sowohl mit als auch ohne Vornullen eingeben kann.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 16. Apr 2013, 18:42
Weiterhin ist es immer möglich, für einzelne Spalten eigene Vergleichsheuristiken zu definieren.
Delphi-Quellcode:
procedure Tmain.cxGridDBTableView1DataControllerCompare(
  ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
  AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
begin
  If aItemIndex = myGridColumn.Index then
    Compare := MyCustomCompareFunction(V1,V2);
end;
  Mit Zitat antworten Zitat
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#6

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 17. Apr 2013, 09:41
eure Einwände sind durchaus zu berücksichtigen, jedoch finde ich eine Sortierung 2 hinter 11 nicht richtig, und ich glaube den User wird dies ebenfalls irritieren.

Zudem gibt es das Problem, das man die Beleg Nummer nicht automatisch hochzählen kann wenn man diese als String deklariert.

Mein Ansatz ist es dem Nutzer eine Einstellungsmöglichkeit für das Format der Nummer zu geben.
als simples Beispiel "BBBBZZZZZZ"
B für Buchstabe, Z für Zahl
Wodurch ich genau weiß wo die Nummern stehen und wo die Buchstaben.
So kann ich druch Stringmanipulation hochzählen, sortieren und trotzdem im Format "RE000025" ausgeben.

Ich bin jedoch auch offen für andere, evtl. nicht so performancelastige Lösungen.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 17. Apr 2013, 09:47
gegf. ein kombinierter Schlüssel?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Hausmarke

Registriert seit: 5. Apr 2013
Ort: Sachsen
47 Beiträge
 
Delphi 2007 Professional
 
#8

AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl

  Alt 17. Apr 2013, 10:02
ja, dies wird sicher einer der besseren Lösungsansätze sein.

Da es sich zur Stringmanipulations-Variante sicher erheblich positiv in der Performance abheben wird.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:07 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