Hi
Ich habe folgende SQL-Abfrage
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT tb_belege.OP, tb_belege.system, tb_belege.GAMNr, tb_belege.BelegNrIntern, tb_belege.BuchungsKreis, tb_belege.SortSz, tb_belege.BelegNr, tb_belege.RefWeiter, tb_belege.RefBelegNr, YEAR(tb_belege.BelegDatum) AS Jahr, tb_belege.BelegDatum, tb_belege.BuDat, tb_belege.Konto, tb_belege.BuNetto, tb_belege.UstBetrag, tb_belege.BuBetrag, tb_belege.BuText, tb_belege.Bezahlt, tb_belege.Name1, tb_belege.status, tb_bklangtext.Langtext, tb_bklangtext.InduGAM, tb_belege.Tage
FROM tb_belege LEFT JOIN tb_bklangtext ON tb_belege.BuchungsKreis = tb_bklangtext.BuchungsKreis WHERE tb_belege.SortSz <> 0 OR tb_belege.SortSz <> Null ORDER BY tb_bklangtext.InduGAM, YEAR(tb_belege.BelegDatum), tb_bklangtext.Langtext, tb_belege.SortSz DESC; |
Das Ergebnis hängt im DBGrid von Devexpress.
Nach Jahr soll gruppiert werden.
Offenbar ist es aber so, dass er intern immer noch das Belegdatum als Datum mitschleppt, denn er gruppiert im Prinzip nach Datum zeigt aber Jahr korrekt als 4 stellige Zahl an.
Wenn ich im Grid bei den Feldeigenschaften die Option setze, dass er nach Display-Text sortieren soll, gruppiert er richtig.
Das Problem, was dann noch bleibt, ist wenn man über das Feld Jahr filtern will, zeigt er für jeden Datensatz das Jahr an und wer hätte es gedacht, der Filter funktioniert nicht, weil er z.B. 2008 mit einem Datum vergleicht
Jetzt hab ich die Abfrage schon modifiziert, in dem ich das Ergebnis von YEAR auf UNSIGNED caste,
mit demselben Effekt.
Aha, wenn ich auf CHAR caste gehts, aber kann mir mal einer erklären, wieso der Datumswert mit durchgeschleift wird und wieso das DBGRID das weiss?
Ich versteh das nicht, die Abfrage dürfte doch nur diese 4-stellige Zahl zurückgeben.
Moderiert von
Christian S.: SQL-Tags hinzugefügt