Delphi-PRAXiS
Seite 1 von 7  1 23     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL Custom Sort (https://www.delphipraxis.net/155005-sql-custom-sort.html)

-187- 5. Okt 2010 07:48

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:
SortColumn:=DBGrid1.Columns.Items[Column.Index].FieldName;
SortOrder:='ASC';
IBQuery1.SQL.Text:='SELECT * FROM MYFIELED ORDER BY ' + SortColumn + ' ' + SortOrder;
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:

Code:
144
27
4
68
88
Heisst also das nur die erste Ziffer beim sortieren beachtet wird. Naütrlich hätte ich es gerne so:

Code:
4
27
68
88
144
Jetzt hab ich gelesen das man es mit CustomSort versuchen könnte aber ehrlich gesagt fehlt mir der Ansatz. Jemand eine Idee?

DeddyH 5. Okt 2010 08:04

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.

-187- 5. Okt 2010 08:32

AW: SQL Custom Sort
 
Zitat:

Evtl. kommt man mit einer View weiter, die versucht, den Wert nach Integer zu casten, aber dazu habe ich gerade kein Beispiel parat.
Versteh nur Bahnhof, kannste das nochmal genauer erklären vielleicht weiss ich dann wonach ich suchen kann :)

DeddyH 5. Okt 2010 08:38

AW: SQL Custom Sort
 
SQL-Code:
SELECT CAST(Feldname AS INTEGER) FROM Tabelle
So meinte ich das. Wenn allerdings nicht-numerische Werte vorhanden sind wird das wohl daneben gehen.

-187- 5. Okt 2010 08:45

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 :!:

Bernhard Geyer 5. Okt 2010 08:47

AW: SQL Custom Sort
 
Dann implementier dir doch eine eigene Sortierung auf Clientseite.

-187- 5. Okt 2010 08:49

AW: SQL Custom Sort
 
Sag das nicht so einfach daher :) Wäre nett wenn du ein Beispiel oder ein Tutorial dafür hättest.

nachti1505 5. Okt 2010 08:54

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;

-187- 5. Okt 2010 08:58

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 ^^

nachti1505 5. Okt 2010 09:56

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 20:03 Uhr.
Seite 1 von 7  1 23     Letzte » 

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