Ms Access Duplicate条目检查日期

时间:2016-07-19 08:12:58

标签: ms-access ms-access-2010 ms-access-2007 ms-access-2016

我正在尝试在msaccess上编写VBA代码来验证数据条目,以避免在故障日志数据库上出现重复。它适用于stLinkCriteria,它是一个字符串数据类型(短文本),但不适用于stDCriteria,它是一个日期数据类型......它不断抛出错误"类型不匹配"或"数据类型不匹配"在这一行

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

当我将鼠标悬停在代码

上时,stDCriteria显示上午12:00:00

虽然日期记录的数据类型是数据库中的日期/时间......

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

1 个答案:

答案 0 :(得分:1)

此代码尝试将字符串值分配给stDCriteria

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

因此,您必须将该变量声明为String而不是Date。

Dim stDCriteria As String

您还可以将 yyyy-m-d 格式应用于DateTime值。这种格式可以避免混淆您的日期是 m / d / yyyy 还是 d / m / yyyy 格式。

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