2016-07-19 29 views
0

Ich versuche, einen VBA-Code auf msaccess zu schreiben, um die Dateneinträge zu validieren, um Duplikate in einer Fehlerprotokolldatenbank zu vermeiden. Es arbeitet für die stLinkCriteria die einen String-Datentyp (Kurztext) ist aber nicht für stDCriteria, die ein Datum Datentyp ist ... es hält einen Fehler „Typenkonflikt“ oder „Datentyp mismatch“ werfen auf dieser LinieMs Access Duplicate Eingabeüberprüfung für Datum

stDCriteria = "[datelogged] = #" & DateTime & "#" 

die stDCriteria zeigt 00.00.00, wenn ich meine Maus auf den Code schweben

Obwohl der Datentyp für datelogged Datum/Uhrzeit in der Datenbank ...

Private Sub Form_AfterUpdate() 
Dim NewTerminal As String 
Dim stLinkCriteria As String 
Dim DateTime As Date 
Dim stDCriteria As Date 

NewTerminal = Me.cboTerID.Value 
DateTime = Me.txtDateLogged.Value 
stLinkCriteria = "[serialptrid] = " & NewTerminal & "" 
stDCriteria = "[datelogged] = #" & DateTime & "#" 
If Me.SerialptrID = DLookup("[serialptrid]", "Fault_Log", stLinkCriteria) Then 
If Me.DateLogged = DLookup("[datelogged]", "Fault_Log", stDCriteria) Then 
MsgBox "This terminal " & NewTerminal & ", " & DateTime & ", has already been entered in this database." _ 
     & vbCr & vbCr & "Please check terminal selected", vbInformation, "Duplicate information" 
     Me.Undo 
End If 
End If 
End Sub 

Antwort

1

Dieser Code zu zuweisen versucht ein Zeichenfolgenwert zu stDCriteria:

stDCriteria = "[datelogged] = #" & DateTime & "#" 

Sie müssen diese Variable also als String anstelle von Date deklarieren.

Dim stDCriteria As String 

Sie können auch ein yyyy-m-d Format auf Ihren DateTime Wert gelten. Dieses Format vermeidet Verwirrung darüber, ob Ihr Datum m/d/jjjj oder d/m/jjjj Format ist.

stDCriteria = "[datelogged] = #" & Format(DateTime, "yyyy-m-d") & "#"