Autor Beitrag
RockyMountains
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 25.08.10 01:01 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 25.08.10 07:49 
Sortiere, die dahinter liegende Datenmenge (DataSet)

_________________
Markus Kinzler.
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: 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

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
RockyMountains Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 25.08.10 13:07 
ausblenden SQL-Anweisung
1:
SELECT * from `tabelle` order by wochentag;					

_________________
Markus Kinzler.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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, ......

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: 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 richtig verstehe müsste es ungefähr so gehen:

ausblenden 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

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)