skynet07
Goto Top

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?

Content-ID: 110294

Url: https://administrator.de/contentid/110294

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

Logan000
Logan000 02.03.2009 um 09:53:16 Uhr
Goto Top
Moin moin

Versuchs mal so:
If (Not IsNull(DLookup("[Datum]", "Anwesenheit", "[Datum] ='" & cDate(Me!Datum) & "'"))) Then  

Gruß L.
skynet07
skynet07 02.03.2009 um 10:00:58 Uhr
Goto Top
Danke Logan, aber immer noch Laufzeitfehler 3464
Logan000
Logan000 02.03.2009 um 14:34:59 Uhr
Goto Top
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.
... "[Datum] ='" & Me!Datum & "'" ...  
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:
... DLookup("[Datum]", "Anwesenheit", "[Datum] =cDate('" & Me!Datum & "')")...  
... DLookup("[Datum]", "Anwesenheit", "cStr([Datum]) ='" & Me!Datum & "'")....  
Solte beides funktionieren.

Gruß L.
skynet07
skynet07 02.03.2009 um 15:06:56 Uhr
Goto Top
DANKE DANKE

Es funktioniert. Geil danke nochmal