访问日期比较不适用于特定日期

时间:2018-07-30 20:31:42

标签: access-vba

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

我的日期比较结果对于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

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

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

谢谢, 菲莉

1 个答案:

答案 0 :(得分:1)

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

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

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