Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

UpdateAbfrage mit VBA Kriterium

Begonnen von Xoar, Dezember 01, 2016, 15:46:08

⏪ vorheriges - nächstes ⏩

Xoar

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

Lachtaube

Du solltest die Abfrage mit qdf.Execute ausführen.

PS: Dein unformatierter Abfragetext kann kein Mensch lesen. >:(
Grüße von der (⌒▽⌒)

Xoar

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;