![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: IBTable
SQL Custom Sort
Moin, ich hab noch ein Fehler in meiner Datenbank Anwendung entdeckt! :)
Mit folgendem Code sortiere ich meine Datenmenge:
Code:
MyField ist ftString,50 und enthält entweder eine Fehler MSG oder einen Zahlenwert. Jetzt möcht ich die Zahlenwerte natürlich absteigend oder aufsteigend sortiert haben aber musste folgende sortierte Reihenfolge festellen:
SortColumn:=DBGrid1.Columns.Items[Column.Index].FieldName;
SortOrder:='ASC'; IBQuery1.SQL.Text:='SELECT * FROM MYFIELED ORDER BY ' + SortColumn + ' ' + SortOrder;
Code:
Heisst also das nur die erste Ziffer beim sortieren beachtet wird. Naütrlich hätte ich es gerne so:
144
27 4 68 88
Code:
Jetzt hab ich gelesen das man es mit CustomSort versuchen könnte aber ehrlich gesagt fehlt mir der Ansatz. Jemand eine Idee?
4
27 68 88 144 |
AW: SQL Custom Sort
Die Sortierung ist völlig korrekt, da es sich ja um alphanumerische Werte handelt. Ich finde das DB-Design etwas unglücklich. Evtl. kommt man mit einer View weiter, die versucht, den Wert nach Integer zu casten, aber dazu habe ich gerade kein Beispiel parat.
|
AW: SQL Custom Sort
Zitat:
|
AW: SQL Custom Sort
SQL-Code:
So meinte ich das. Wenn allerdings nicht-numerische Werte vorhanden sind wird das wohl daneben gehen.
SELECT CAST(Feldname AS INTEGER) FROM Tabelle
|
AW: SQL Custom Sort
Ja hab das eben auch in einem anderen Thread hier gefunden. Klappt solange kein String vorhanden ist. Bei meinem System hab ich aber Integer und String Werte :!:
|
AW: SQL Custom Sort
Dann implementier dir doch eine eigene Sortierung auf Clientseite.
|
AW: SQL Custom Sort
Sag das nicht so einfach daher :) Wäre nett wenn du ein Beispiel oder ein Tutorial dafür hättest.
|
AW: SQL Custom Sort
Wenn deine Schlüssel eine feste maximal Länge haben (sollten sie ja eigentlich) und diese Maximal-Länge nicht zu lang ist, würde es vielleicht lohnen das Feld mit Leerzeichen aufzufüllen.
Aus "4" würde dann "_________4" werden. Dann funktioniert auch das Sortieren wieder. Im besten Fall bietet dir dein DBMS eine solchige Funktion an, die du dann einfach als Sortierkritierium mit übergibst.
Delphi-Quellcode:
IBQuery1.SQL.Text:='SELECT * FROM MYFIELED ORDER BY FILL_LEFT(' + SortColumn + ') ' + SortOrder;
|
AW: SQL Custom Sort
Ist FILL_LEFT eine SQL Funktion oder hast du das jetzt nur so als Bsp. genannt? Jedenfalls kennt mein DBMS diese Funktion nicht. Ja ich könnte beim Schreiben der Werte Leerzeichen dranhängen dann müsste es ja funktionieren. Ich hatte schon an führende Nullen gedacht aber das sieht mehr dann zu unübersichtlich aus. Auf Leerzeichen bin ich nicht gekommen ^^
|
AW: SQL Custom Sort
FILL_LEFT war jetzt ein Beispiel.... glaube gerade auch nicht, dass es eine ReverseOP zum trim gibt, aber diese sollte sich als StoedProcedure noch schnell selber schreiben lassen. Fest in den Datenbestand würde ich die Leerzeichen auf keinen Fall integrieren ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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