Hallo,
Hier meine Abfrage:
SQL_DATE = "select max(woche) as Woche, max(Jahr) as Jahr, ID, Ort from Handel where Ort = '" & RS_ID("Ort_Grob") & "' group by woche, jahr, ID, Ort"
set RS_Date = MyConn.Execute(SQL_DATE)Diese Abfrage gibt mir einfach einen Wert zurück, aber nicht den max-Wert. Woche und Jahr sind als Zahl definiert. Kann mir bitte jemand sagen, was falsch ist?
Die Aggregatfunktionen MIN und MAX beziehen sich auf die Datensatzgruppe. Deine Gruppen bestehen jeweils aus Datensätzen, die in woche, jahr, ID, Ort übereinstimmen. Diese Gruppe hat deshalb zwangsläufig in jedem Datensatz den selben Wert für woche und Jahr. Du schränkst das Ganze nun mit WHERE auf einen bestimmten Ort ein. Eigentlich sollte RS_Date nun mehrere Datensätze enthalten, nicht nur einen, nämlich alle die, bei denen Ort = '" & RS_ID("Ort_Grob") & "' gilt, gruppiert nach woche, jahr, ID.
Du solltest also nicht nach woche und Jahr gruppieren, wenn Du das Maximum _unterschiedlicher_ Werte hierfür ermitteln willst. Und: Normalerweise ist die Gruppierung bei dieser Art der Abfrage vorrangig und Einschränkungen sollten danach per HAVING erfolgen.
Probiere:
SQL_DATE = "SELECT MAX(woche) as Woche, MAX(Jahr) as Jahr, ID, Ort FROM Handel GROUP BY ID, Ort HAVING Ort = '" & RS_ID("Ort_Grob") & "'"
viele Grüße
Axel