我在MS Access DB中进行了日期检查,我已经建好了好几个月,但今天无论输入如何都会抛出持续的正数。我检查了输出,他们每次都显示正确的周/年,但检查失败了。 就像一夜之间,它决定以不同的方式阅读日期。
If Not IsNull(Raised_For) Then
If Not Format(Me.Raised_For, "WW/YYYY", vbMonday) > Format(Date, "WW/YYYY", vbMonday) Then
MsgBox "You must enter a date beyond the current week", vbOKOnly, "Past Date"
Cancel = True
End If
End If
支票示例10/2018 > 9/2018
出现为False
。
我真的很难理解今天为什么会这样。
答案 0 :(得分:3)
非常简单:
由于您正在比较字符串,因此您正在进行词汇比较。由于第一个字符串的第一个字母1小于第二个字符串的第一个字母9,因此比较返回false。
使用DateDiff
比较日期:
If DateDiff("ww", Date(), Me.Raised_For, vbMonday) > 0 Then
'Do Stuff
End If
答案 1 :(得分:0)
如@Erik von Asmuth所述,您正在比较字符串,尽管代码的Format()
部分。要比较日期,请尝试将值转换为日期并进行检查:
If Not Cdate(Me.Raised_For) > CDate(Date) Then
这应该足够了。如果Me.Raised_For
不是有效日期,请考虑使用错误捕获器。
答案 2 :(得分:0)
使用 DateDiff 进行比较:
If Not IsNull(Me!Raised_For) Then
If DateDiff("ww", Me.Raised_For, Date, vbMonday) <= 0 Then
MsgBox "You must enter a date beyond the current week", vbOKOnly, "Past Date"
Cancel = True
End If
End If