Entwickler-Ecke
Datenbanken - DBGrid nach Wochentage sortieren
RockyMountains - Mi 25.08.10 01:01
Titel: DBGrid nach Wochentage sortieren
Hallo Delphi-Forumianer.
Ich suche schon seit ein paar Tagen eine Spalte im TDBGrid mit dem Namen "Wochentage" und dem Inhalt 'Montag' bis 'Sonntag' in richtiger chronologischer Reihenfolge zu sortieren. Scheitere aber schon an den Anfängen. Hat vielleicht jemand von euch eine Idee? Ich programmiere erst seit ca. 2 Jahren in Delphi und tue mich da scheinbar doch ein wenig schwer noch im Moment ;(
Viele Grüsse
leider nicht aus den RockyMountains ;)
mkinzler - Mi 25.08.10 07:49
Sortiere, die dahinter liegende Datenmenge (DataSet)
Critter - Mi 25.08.10 10:18
Hallo,
wie ermittelst du denn die dahinter liegende Datenmenge? Ist das einfach eine Tabelle oder das Ergebnis eines Querys? Dann wäre noch interessant zu wissen, wie die Wochentage in der Tabelle liegen? Ist es ein Datumsfeld, eine Nummer (Wenn wielcher Wert entspricht dann welchem Wochentag) oder ein String? Zu guter Letzt könnte noch die Information helfen, um welche Datenbank es sich handelt.
Je nachdem könnte man dann überlegen ob es möglich ist das ganze schon im Query zu sortieren oder ob man Creativ werden muss.
critter
RockyMountains - Mi 25.08.10 12:32
Hallo,
ich verwende eine mySQL-Datenbank mit TClientDataSet und TSQLQuery. Das Problem ist die Datenquelle. Die mySQL-Datenbank enthält die Informationen tatsächlich als String in der Form von 'Montag' bis 'Sonntag'. Leider habe ich darauf keinen Einfluss und werde daran auch nichts ändern können. Ich liste die Daten bisher mit einem einfachen Query der Form: SELECT * from `tabelle`;
Ich bin für alle Vorschläge offen :)
Danke schon mal für eure Bemühungen
mkinzler - Mi 25.08.10 13:07
SQL-Anweisung
1:
| SELECT * from `tabelle` order by wochentag; |
Nersgatt - Mi 25.08.10 13:19
Hast Du die Möglichkeit, die Datenbank zu ändern? Den Wochentag als Text zu speichern ist nicht gerade geschickt (wie Du jetzt beim Sortieren bemerkst).
Wenn Du das nicht ändern kannst, könntest Du im Select das umsetzen. Untestützt MySQL z.B. IIF?
Select IIF(Wochentag = 'Montag', 1, IIF(Wochentag = 'Dienstag', 2, ......
Critter - Mi 25.08.10 13:20
Hallo,
da fallen mir 2 Dinge ein die man Probieren könne. Zum einen Natürlich auf das DBGrid zu Verzichen und die Daten in eine nicht DB Gebundene Komponente zu verwenden (ich würde den VirtualStringTree nehmen) und diese von Hand sortiert zu befüllen. Als zweite Möglichkeit würde ich ein wenig mit der
FIND_IN_SET Funktion experimentieren. Ich habe sie noch nicht genutzt aber wenn ich das in der
Doku [
http://dev.mysql.com/doc/refman/5.1/de/string-functions.html] richtig verstehe müsste es ungefähr so gehen:
SQL-Anweisung
1: 2:
| SELECT MyImortantField, FIND_IN_SET(WochtagStrFeld, 'Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag') As DayNum Order By DayNum |
In DayNum müsstest du dan für Montag eine 1, für Dienstag eine 2 usw. bekommen.
critter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!