Hallo Leute,
ein kurze Frage:
Ich versuche folgendes:
Private Sub btnFeiertage_Click()
'Alle Feiertage durchlaufen und jedem Mitarbeiter die 9,6 Std (außer Sonntags) gutschreiben. Vordefinierte Updateabfrage
Dim qdf As QueryDef
Dim rsFeiertag As Recordset
Set rsFeiertag = CurrentDb.OpenRecordset("tblFeiertage", dbOpenDynaset)
Set qdf = CurrentDb.QueryDefs("UpdateFeiertagsstunden") 'Hier wird die vordefinierte Updateabfrage geladen, in der VBA Parameter zugewieden werden sollen.
Do While Not rsFeiertag.EOF
qdf.Parameters("[FeiertagDatum]") = rsFeiertag!DatumFeiertag
DoCmd.OpenQuery "UpdateFeiertagsstunden"
rsFeiertag.MoveNext
Loop
rsFeiertag.Close
Set rsFeiertag = Nothing
End Sub
Also bei einer Auswahlabfrage klapp das mit dem VBA Parameter gut, geht sowas bei Updateabfragen etc nicht?
Bei Ausführung fragt er mich nach dem DatumFeiertag-Parameter.
Datumsfeld in der Tabelle ist vom Typ: Datum/Uhrzeit
Hier noch der SQL Code der Abfrage:
UPDATE tblMitarbeiter INNER JOIN (tblKalendertage INNER JOIN tblZeiterfassung ON tblKalendertage.Datumstag = tblZeiterfassung.Datumstag_F) ON tblMitarbeiter.MitarbeiterID = tblZeiterfassung.MitarbeiterID_F
SET tblZeiterfassung.Feiertagsstunden = 9.6
WHERE (((tblKalendertage.Datumstag)=[FeiertagDatum]) AND ((tblMitarbeiter.Wachabteilung) Between 1 And 3) AND ((tblKalendertage.WT)<>7));
Muss ich die Abfrage als SQL String in VBA zusammen bauen und da die Variable wechseln, oder geht das auch mit der parameterisierten Abfrage?
Grüße
Du solltest die Abfrage mit qdf.Execute ausführen.
PS: Dein unformatierter Abfragetext kann kein Mensch lesen. >:(
Hallo Lachtaube,
danke für den Tipp, war Gold wert, klappt !
Wie definierst Du unformatiert? Soll ich alle tbl... entfernen und Klammern? Also alles was nicht notwendig ist, aber von Access erzeugt wird?!
UPDATE tblMitarbeiter
INNER JOIN tblKalendertage
INNER JOIN tblZeiterfassung
ON Datumstag = Datumstag_F ON MitarbeiterID = MitarbeiterID_F
SET Feiertagsstunden = 9.6
WHERE Datumstag=[FeiertagDatum] AND Wachabteilung Between 1 And 3 AND WT<>7;