Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Flocko am September 23, 2016, 08:36:32

Titel: UPDATE Funktion über Kombinationsfelder
Beitrag von: Flocko am September 23, 2016, 08:36:32
Hallo zusammen,

ich habe eine Frage bezüglich der UPDATE Funktion. Meinen bisherigen Code seht ihr unten. Falls der Nutzer bei einem bestimmten Event an einem bestimmten Datum (welches schon in der Tabelle angelegt ist) einen anderen Preis angibt, soll er gefragt werden ob er den vorherigen Datensatz mit dem neunen Preis überschreiben soll.
(Ich hoffe es wird durch den Code verständlicher :D)

Dim strSQL As String
Dim Box As String
If DCount("*", "tblEvents", "Event = '" & Me!EventName & "' AND Datum = " & Format(CDate(Me!Datum), "\#yyyy-mm-dd\#")) > 0 Then
        Box = MsgBox("Für dieses Event wurde am angegebenen Datum schon ein Preis festgelegt. Soll dieser überschrieben werden?", vbYesNo)
        If Box = vbNo Then
            Cancel = True
        Else
            strSQL = "UPDATE tblEvents SET Preis = '" & Me!Preis & "' WHERE Event = '" & Me!EventName & "' AND Datum = " & Format(CDate(Me!Datum), "\#yyyy-mm-dd\#)")
        End If
Else [Neuer Datensatz wird angelegt.]
End If

Ich vermute irgendwas stimmt bei dem "UPDATE"-Teil nicht, da das Programm derzeit reoibungslos durchläuft jedoch nichts überschrieben wird...

Danke schonmal!
Titel: Re: UPDATE Funktion über Kombinationsfelder
Beitrag von: DF6GL am September 23, 2016, 15:06:24
Hallo,

abgesehen von den Syntaxfehlern sollte es im Fall, dass "Preis" vom Datentyp "Währung" oder "Double" ist, so lauten:

strSQL = "UPDATE tblEvents SET Preis = " & Str(nz(Me!Preis,0.)) & " WHERE Event = '" & Me!EventName & "' AND [Datum] = " & Format(CDate(Me![Datum]), "\#yyyy-mm-dd\#")

BTW: 
Datum ist ein reserviertes Wort und sollte in Eckklammern stehen.
Warum wird ein (Event-)Name als Kriterium benutzt?  Gibt es keinen numerischen Primärschlüssel?