Doppelte Eingaben verhindern
Ich habe ein Formular für ne Anwesenheitsliste. Diese ist mit einer Tabelle verbunden in welche Datum und Co. drin stehen.
Nun möchte ich, das das Formular prüft ob das Datum doppelt eingeben wurde.
genommen habe ich folgenden Wert:
Private Sub Datum_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[Datum]", "Anwesenheit", "[Datum] ='" _
& Me!Datum & "'"))) Then
MsgBox " Das Datum ist schon vergeben"
Cancel = True
Me!Datum.Undo
End If
End Sub
Und jedes mal wenn ich das Datum erneut auswähle und rausgehe, meckert er
"Datentypen in Kriterienausdruck unverträglich"
Was habe ich falsch gemacht?
Nun möchte ich, das das Formular prüft ob das Datum doppelt eingeben wurde.
genommen habe ich folgenden Wert:
Private Sub Datum_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[Datum]", "Anwesenheit", "[Datum] ='" _
& Me!Datum & "'"))) Then
MsgBox " Das Datum ist schon vergeben"
Cancel = True
Me!Datum.Undo
End If
End Sub
Und jedes mal wenn ich das Datum erneut auswähle und rausgehe, meckert er
"Datentypen in Kriterienausdruck unverträglich"
Was habe ich falsch gemacht?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110294
Url: https://administrator.de/contentid/110294
Ausgedruckt am: 08.11.2024 um 11:11 Uhr
4 Kommentare
Neuester Kommentar
Moin Moin
Also ich hab mir das mal genauer angesehen. (Hab schon ewig nicht mehr mit Access gearbeitet.
Wie du schon richtig erkannt hast muss im Kriterium von DLookup der Feldwert Me!Datum in Hochkommas gesetzt werden, sonst scheitert die Funktion auf jedem Fall.
Damit beginnt das Problem. Offensichtlich wird jeder Wert in Hochkommas von der Funktion als Text verstanden (Anlog zu Access SQL) und rotzt zurecht einen Fehler raus wenn dieser Text mit einem Datum verglichen werden soll.
Also kannst du entwerden das Feld Datum in Text konvertieren oder dein inhalt deines Kontrols explizit in ein Datum. Etwa so:
Solte beides funktionieren.
Gruß L.
Also ich hab mir das mal genauer angesehen. (Hab schon ewig nicht mehr mit Access gearbeitet.
Wie du schon richtig erkannt hast muss im Kriterium von DLookup der Feldwert Me!Datum in Hochkommas gesetzt werden, sonst scheitert die Funktion auf jedem Fall.
... "[Datum] ='" & Me!Datum & "'" ...
Also kannst du entwerden das Feld Datum in Text konvertieren oder dein inhalt deines Kontrols explizit in ein Datum. Etwa so:
... DLookup("[Datum]", "Anwesenheit", "[Datum] =cDate('" & Me!Datum & "')")...
... DLookup("[Datum]", "Anwesenheit", "cStr([Datum]) ='" & Me!Datum & "'")....
Gruß L.