PDA

Vollständige Version anzeigen : Abfrage sortieren mit eindeutigen Werten


Bronco77
28.04.2011, 10:13
Hallo,

ich habe eine Zeiterfassungstabelle mit Datensätzen. Um den User jetzt das ganze Filtern zu lassen, möchte ich ein Kombinationsfeld verwenden, in dem eine Kalenderwoche auswählbar ist. So weit so gut:

SELECT Format([VDatum],"ww|yyyy",2,2) AS KW, Format([VDatum],"ww. K\W yyyy",2,2) AS Bez
FROM ut_TBD_MA_Zeiten
ORDER BY ut_TBD_MA_Zeiten.VDatum DESC;


Die Abfrage zeigt auch die Daten richtig an und es wird richtig sortiert.

Kommt ein Datum in der Tabelle mehr als einmal vor (was nunmal auch so ist!), wird als Abfrageergebnis je DS der Tabelle ein DS angezeigt. Ich habe gerade 485 DS in der Tabelle und mit 105 verschiedenen Datum-Angaben. Somit müsste das Ergebnis 21 Zeilen zurückgeben. Ich möchte nur die unterschiedlichen Wochen haben!

Auch das bekomme ich hin:

SELECT "*" AS KW, "Alle" AS Bez
FROM ut_TBD_MA_Zeiten
UNION SELECT DISTINCT KW, Bez
FROM TBD_qry_Filter_KW_1_Daten;

Das Problem: in der zweiten Abfrage sind die Daten nicht mehr nach Datum sortiert! Wie kriegt man das hin???

Vielen Dank schon mal!

Ich habe als Beispiel mal die DB mit Tabelle und den beiden Abfragen angehängt.

kama
28.04.2011, 11:48
Hallo
SELECT DISTINCTROW Format([VDatum],"ww"". KW ""yyyy",2,2) AS Bez
FROM ut_TBD_MA_Zeiten
GROUP BY Format([VDatum],"ww"". KW ""yyyy",2,2)
ORDER BY First(ut_TBD_MA_Zeiten.VDatum) DESC;

Bronco77
28.04.2011, 14:44
Hallo kama,

danke für den Tipp. Klappt auch super!

Kann man das auch in eine Union-Abfrage mit einbauen? Hab es folgendermaßen versucht, klappt aber nicht:

SELECT "*" AS KW, "Alle" AS BEZ
FROM ut_TBD_MA_Zeiten
UNION SELECT DISTINCTROW Format([VDatum],"ww|yyyy",2,2) AS KW, Format([VDatum],"ww"". KW ""yyyy",2,2) AS Bez
FROM ut_TBD_MA_Zeiten
GROUP BY Format([VDatum],"ww|yyyy",2,2), Format([VDatum],"ww"". KW ""yyyy",2,2), ut_TBD_MA_Zeiten.Projekt
ORDER BY First(ut_TBD_MA_Zeiten.VDatum) DESC;

Habe dann auch deine Abfrage als Eigenständige Abfrage gespeichert und folgendes probiert:

SELECT "*" AS KW, "Alle" AS BEZ
FROM ut_TBD_MA_Zeiten
UNION SELECT TBD_qry_Filter_KW_1.KW, TBD_qry_Filter_KW_1.Bez
FROM TBD_qry_Filter_KW_1;

...dann sind die Einträge wieder durcheinander.

Oder sollte man das Problem ggf. anders lösen?

Bronco77
29.04.2011, 11:47
Hallo,

so, ich weiß zwar nicht, ob noch jemand ne Lösung für das erweiterte Problem hat, aber ich hab ne Lösung für mich gefunden:

Ich habe einfach neben das Kombinationsfeld eine Checkbox gesetzt. Beim Kombinationsfeld als Ereignis nach Aktuallisierung und bei der Checkbox bei Click:
Private Sub KFilDatKW_AfterUpdate()

If Me.CFilDatKW = True Then Me.CFilDatKW = False
Me.LDatum.Requery

End Sub

Private Sub CFilDatKW_Click()
Me.LDatum.Requery
End Sub

Die Abfrage sieht jetzt so aus:

SELECT DISTINCT ut_TBD_MA_Zeiten.VDatum, Format(ut_TBD_MA_Zeiten!VDatum,"dd\.mm\.yyyy (dddd"", ""ww"". KW)""",2,2) AS Ausdr1
FROM ut_TBD_MA_Zeiten
WHERE (((ut_TBD_MA_Zeiten.Projekt) LIKE Formulare!Timeboy_Daten!FiltProjekt) And ((Format(ut_TBD_MA_Zeiten!VDatum,"ww|yyyy",2,2)) LIKE (IIf(Formulare!Timeboy_Daten!CFilDatKW=False,Formulare!Timeboy_Daten!KFilDatKW,"*"))))
ORDER BY ut_TBD_MA_Zeiten.VDatum DESC;


Sollte noch jemand wissen, wie man in das Kombi-Feld an erste Stelle einen Wert reinbringt, schreibt mir bitte per PM!

Vielen Dank und Thema gelöst :)