![]() |
Datenbank: In_Memory • Version: 10.4 • Zugriff über: TClientDataSet
TClientDataSet mit NaturalSort-Spalte oder Alternative (Firedac TFDMemTable?)
Moin,
wie bekomme ich es hin, dass ich eine Spalte, die bis jetzt "ftInteger" war und auf "ftWideString, 15" umgestellt wurde nach einem ![]() Es ist so, dass in Zukunft kein zwingendes Schema auf diesem Feld liegt (z.b. ersten Zwei + 7+8 Zeichen immer "xx" -> xx0000xx00). Die Werte haben auch eine unterschiedliche länge (zwischen 1-15)... Wir nutzen Firebird als DB, dort kann über eine collation mit "NUMERIC-SORT" für eine Spalte die gewünschte Sortierung erreicht werden. wir kopieren aber häufig die Daten aus der Datenbank für die Anzeige und Bearbeitung in TClientDataSet und schreiben sie danach wieder in die Datenbank ab. Zur Anzeige nutzen wir an vielen Stellen das DevExpress-Grid, welches auch eine Möglichkeit für ein "custom sort" bietet. Wir bieten über Einstellungen oder OnTitelClick dem Benutzer die Möglichkeit, die Daten entsprechend seinen wünschen zu sortieren. Leider haben wir auch noch viele Stellen, die die das Delphi Standard Grid nutzen bzw. drucken die TClientDataSets ohne eine Grid-Zwischenschicht. Wie bekomme ich dort eine Sortierung nach NaturalSort (1,2,11,12, nicht 1,11,12,2; Nummerblöcke werden zusammengefasst) hin? Wenn ich das richtig sehe, bietet das TClientDataSet hierfür keine Unterstützung. Mir fällt auch keine Regel ein, wie ich das Feld für ein computed by aufbereiten könne, nach dem dann sortiert wird (hat jemand von euch eine Idee?). Alternativ scheint die FireDac TFDMemTable ggf. eine Lösung zu bieten: ![]() Zitat:
Macht es Sinn auf dieses DataSet umzubauen? Das wird ja von Emparcadero als "Nachfolger" angesehen -> ![]() 1. gibt das eine Locale mit "SORT_DIGITSASNUMBERS" oder kann ich das selber setzen? 2. Den Delphi eigenen SourceCode möchte ich eigentlich nicht ändern... 3. Eine eigene Funktion für die Expression hab ich angelegt. aber auch hier hab ich doch wieder das Problem wie mit der "computed by" Spalte -> was muss die Funktion zurückgeben? Zitat:
Ich hab in der dürftigen Dokumentation jetzt nichts gefunden... Winapi.ShLwApi.StrCmpLogical liefert z.B. die gewünschte Sortierung... Oder ist mein Ansatz komplett falsch. Ich bin auf eure Ideen und Ansätze gespannt. Vielen Dank, raller09 |
AW: TClientDataSet mit NaturalSort-Spalte oder Alternative (Firedac TFDMemTable?)
Moin,
keiner eine Idee oder eine Alternative? Danke, raller09 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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