我制作了一个用于更新历史数据的表格和一个用于检查结果的子表格!除了一个小问题,一切都正常。
我的日期比较结果对于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,它会给我“你好”,这是正确的!我发现此错误发生在我作为时间戳记的某些日期中,但适用于其他日期!
我检查了我的代码,并认为它是正确的。我不知道问题是什么!
谢谢, 菲莉
答案 0 :(得分:1)
您的问题是,日期值必须正确设置为文本表达式的格式。因此:
" And ([product and shareclass level data update].[timestamp] <= #" & Format(thepurchasedate, "yyyy\/mm\/dd") & "#)" & _
或者,实现我的功能CSql,或者-甚至更好-开始使用参数(为此使用bing / google)。