Beitrag aus SmartTools Access Weekly
Kalenderwoche per VBA/SQL abfragen
Access 365 2024 2021 2019 2016 2013 2010
FRAGE Der Anwender gibt in einem Feld im Access-Formular eine Kalenderwoche ein. Anschließend möchte ich alle Datensätze einer Tabelle "Protokolle", in denen ein Datum "LetztePrüfung" dieser Kalenderwoche entspricht, in ein Recordset einlesen. Die Steuerung per Schaltfläche und den Umgang mit Recordsets beherrsche ich, aber wie genau muss die SQL-Abfrage für die Initialisierung des Recordsets aussehen?
Diverse Anfragen
ANTWORT Für die Selektion der Datensätze zu einer bestimmten Kalenderwoche verwenden Sie folgende SQL-Abfrage:
strSQL = _
"SELECT * FROM Protokolle " & _
"WHERE DatePart("ww",CDate([LetztePrüfung]),2,2) = " & _
Me.txtWoche & _
"ORDER BY [ID] Asc"
Das Kriterium (Where-Klausel) arbeitet wie folgt: Mit der Funktion "DatePart()" wird zunächst die Kalenderwoche zum Inhalt des Feldes "LetztePrüfung" ermittelt. Die Parameter "2,2" legen fest, dass dabei der Montag als Start der Woche und die erste Woche des Jahres mit vier Tagen als erste Kalenderwoche zugrunde gelegt werden. Das Ergebnis vergleichen wir dann mit dem Inhalt des Formularfeldes "txtWoche". Nur bei Übereinstimmung wird dadurch der jeweilige Datensatz selektiert.