首页 > 解决方案 > 访问日期比较不适用于特定日期

问题描述

我制作了一个表格来更新历史数据和一个用于检查结果的子表格!一切正常,除了一个小问题。

对于 2018 年任何月份的第一个日期,我的日期比较结果都不正确!!!(这让我发疯)

所以我的代码如下:

Private Sub runbtn_Click()

Me.Refresh

Dim theminimum As String
Dim theprodscID As String
Dim thepurchasedate As Date

If IsNull(Me.purchasedate) = False Then

theprodscID = Str(Me.prodscID)
thepurchasedate = Me.purchasedate.Value

'minimum textbox

    theminimum = "Select Top 1 [update value]" & _
                " From [product and shareclass level data update]" & _
              " Where [product and shareclass level data update].[dataID] =" & Str(1) & _
              " And [product and shareclass level data update].[prodscID] =" & theprodscID & _
              " And ([product and shareclass level data update].[timestamp] <= #" & thepurchasedate & "#)" & _
              " Order by [product and shareclass level data update].[timestamp] DESC"


    If CurrentDb.OpenRecordset(theminimum).RecordCount = 0 Then
    Me.minimum = Null
    Else
    Me.minimum = CurrentDb.OpenRecordset(theminimum).Fields(0).Value
    End If

例如,如果我有记录更新值:“hello” on 01/05/2018; “再见”于 2017 年 1 月 8 日。然后,当我输入购买日期为 01/05/2018 时,它应该给我“你好”而不是“再见”!但是,如果我输入 12/05/2018,它会给我“你好”,这是正确的!我发现此错误发生在我作为时间戳记的某些日期,但适用于其他日期!

我检查了我的代码,我认为它是正确的。我不知道是什么问题!

谢谢, 菲莉

标签: ms-accessvba

解决方案


您的问题是,日期值必须正确格式化为文本表达式。因此:

" And ([product and shareclass level data update].[timestamp] <= #" & Format(thepurchasedate, "yyyy\/mm\/dd") & "#)" & _

或者,实现我的函数CSql,或者 - 甚至更好 - 开始使用参数(为此,bing/google)。


推荐阅读