Hallo
In meinem Code gibt es mir bei in den Zeilen db.Execute "Update.... die Fehlermeldung: Syntaxfehler in Update Anweisung.
Mir ist nun jedoch nicht recht klar wo der Fehler liegt.
Private Sub cmdBuchenHotel_Click()
'Reservation
Dim intZim1 As Integer, intZim2 As Integer, intZim3 As Integer, intZim4 As Integer, intZimHC As Integer
Dim rsZimmer As DAO.Recordset, rsHotel As DAO.Recordset
intZim1 = 0
intZim2 = 0
intZim3 = 0
intZim4 = 0
intZimHC = 0
Set db = CurrentDb
Set rsZimmer = db.OpenRecordset("SELECT * FROM tblAdresseSessionZimmer WHERE adreSesZim_Adresse_IDF = " & Me.adresse_ID & " AND adreSesZim_Session_IDF = " & Me.cboAdreSes_Session_IDF & " AND adreSesZim_Hotel_IDF = " & Me!sfrAdresseSession!cboAdreSes_Hotel_IDF & " ORDER BY adreSesZim_adresse_IDF, adreSesZim_session_IDF ", dbOpenSnapshot)
Set rsHotel = db.OpenRecordset("SELECT * FROM qryHotelSession WHERE hotSes_Session_IDF = " & Me.cboAdreSes_Session_IDF & " AND hotSes_Hotel_IDF = " & Me!sfrAdresseSession!cboAdreSes_Hotel_IDF & " ORDER BY hotSes_Session_IDF, hotSes_Hotel_IDF ", dbOpenSnapshot)
If rsZimmer.RecordCount > 0 Then
rsZimmer.MoveFirst
Do Until rsZimmer.EOF
If DLookup("zimBett_Anzahl", "tblCboZimmerBett", "zimBett_ID = " & rsZimmer!adreSesZim_ZimmerBett_IDF) = "1" Then
intZim1 = intZim1 + 1
End If
If DLookup("zimBett_Anzahl", "tblCboZimmerBett", "zimBett_ID = " & rsZimmer!adreSesZim_ZimmerBett_IDF) = "2" Then
intZim2 = intZim2 + 1
End If
If DLookup("zimBett_Anzahl", "tblCboZimmerBett", "zimBett_ID = " & rsZimmer!adreSesZim_ZimmerBett_IDF) = "3" Then
intZim3 = intZim3 + 1
End If
If DLookup("zimBett_Anzahl", "tblCboZimmerBett", "zimBett_ID = " & rsZimmer!adreSesZim_ZimmerBett_IDF) = "4" Then
intZim4 = intZim4 + 1
End If
If DLookup("zimBett_Anzahl", "tblCboZimmerBett", "zimBett_ID = " & rsZimmer!adreSesZim_ZimmerBett_IDF) = "HC" Then
intZimHC = intZimHC + 1
End If
rsZimmer.MoveNext
Loop
End If
If rsHotel.RecordCount > 0 Then
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_1 = " & rsHotel!hotSes_ResZimmer_1 - intZim1 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_2 = " & rsHotel!hotSes_ResZimmer_2 - intZim2 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_3 = " & rsHotel!hotSes_ResZimmer_3 - intZim3 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_4 = " & rsHotel!hotSes_ResZimmer_4 - intZim4 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
End If
Set rsZimmer = Nothing
Set rsHotel = Nothing
End Sub
Gruss Daniel
Hallo,
warum benutzt Du Abfragen und nicht Tabellen für den Update?
Hilfreich wäre zudem der SQL-String der Abfrage
Gibt es die angegebenen Felder in den Recordsets und haben die Werte, sind also nicht "NULL"?
Ist in jedem Modul "Option Explicit" vorhanden?
Kannst Du die gesamte DB im VBA-Editor Debuggen/Kompilieren?
Hallo
Ich habe die Feldnamen überprüft, die Option explicit ist vorhanden, ich greife nun auf die tbl und nicht mehr auf die qry zu.
Die Datenbank ist zu gross um zu senden. Ich habe aber in eine kleine Test Db gemacht, wo ich genau den gleichen Fehler habe. Ich habe glaube ich habe in der folgende Zeile wirklich einen Syntax-Fehler:
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_1 = " & rsHotel!hotSes_ResZimmer_1 - intZim1 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
Ich sende dir die Testdb.
Gruss Daniel
[Anhang gelöscht durch Administrator]
Kleiner Tip, wie man solche Fehler einkreist:
Schreib den Updatebefehl in eine variable vom Typ String
Gib den String per Debug.print in der Konsole aus.
Anschließend poste den String hier und/oder gib in dem Abfragefenster ein und schaue, welcher Fehler kommt
Hallo
Ich habe den Fehler gefunden
db.Execute "Update From qryHotelSession SET hotSes_ResZimmer_1 = " & rsHotel!hotSes_ResZimmer_1 - intZim1 & " WHERE hotSes_ID = " & rsHotel!hotSes_ID
Das From nach Update ist falsch
Gruss Daniel