日期检查开始失败

时间:2018-02-26 14:36:53

标签: vba access-vba access

我在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

我真的很难理解今天为什么会这样。

3 个答案:

答案 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