加载主表单后,我希望Access检查今天是否已提交记录。如果是这样,我希望该标签不可见。
但是,使用下面的代码,我收到“条件表达式中的数据类型不匹配”。 (运行时错误'3464')
Private Sub Form_Load()
Set db = CurrentDb
Set rs = db.OpenRecordset("tblCalibration", dbOpenSnapshot, dbReadOnly)
rs.FindLast "CalibrationDate='" & Date & "'"
If rs.NoMatch Then
navCalibration.Visible = True
Else
navCalibration.Visible = False
End If
End Sub
答案 0 :(得分:1)
如果 CalibrationDate 字段是日期/时间数据类型,则会出现该错误。在这种情况下,请将Date
的值括在#
而不是'
个字符中。
'rs.FindLast "CalibrationDate='" & Date & "'"
rs.FindLast "CalibrationDate=#" & Date & "#"
此外,您可以格式化Date
值,以避免在 d / m / yyyy 和 m / d / yyyy 格式化日期之间出现任何混淆。
rs.FindLast "CalibrationDate=" & Format(Date, "\#yyyy-m-d\#")
然而,只使用Date
函数的名称应该更简单,而不必担心格式化。
rs.FindLast "CalibrationDate=Date()"
更简单一点,使用DCount()
来计算 CalibrationDate 包含今天日期的行数。使用这种方法你不需要打扰记录集。
If DCount("*", "tblCalibration", "CalibrationDate=Date()") = 0 Then
Me.navCalibration.Visible = True
Else
Me.navCalibration.Visible = False
End If