![]() |
DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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 |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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. |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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 |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
Zitat:
Code:
Wenn man diese Auftrags- und Rechnungsnummern nicht als Nummer sondern als String speichert hat man mehr Freiheiten.
00000001 ... 00000002 ... 00000003 ...
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. |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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; |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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. |
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
gegf. ein kombinierter Schlüssel?
|
AW: DevExpress - cxGrid - sortieren von Zahlen mit unterschiedlicher Stellenanzahl
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 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-2025 by Thomas Breitkreuz