我正在使用Access 2007。
我需要将完整日期和时间字段的值转换为日期部分,以便我可以看到它是否与今天日期的dcount相匹配。我已经尝试过DateValue(),Int()等等,我认为我做得对(有可能我没有)。它似乎不起作用。
这是我的代码没有我尝试过的任何事情,以免混淆。您可以在此处看到[tsUpdated]
值和CurDate
值不匹配,因为[tsUpdated]
是完整日期,CurDate
只是日期。如何将[tsUpdated]
格式化为DCount中的日期...并使其有效?
GetID = Forms!frm_MainMenu!AssocIDBox
CurRecord = Forms!frm_EC_All![L#].Value
CurDate = DateValue(Now)
'
Dim tCompleted As String: tComp = DCount("[EC#]", "tbl_Data", "[AssocID] = " & GetID & " AND [tsUpdated] = " & CurDate)
'
MsgBox "You completed " & tComp & " today.", vbOKOnly, "Summary"
'
End Sub
答案 0 :(得分:3)
DateValue(Now)
返回与Date()
相同的日期/时间值。因此,您可以CurDate = DateValue(Now)
代替CurDate = Date
而不是Date()
。但是,我认为保存 CurDate 变量中的值没有任何好处;只需在需要时使用WHERE
。
更值得关注的是“将日期时间转换为DCount中的短日期”。这意味着db引擎必须从 tbl_Data 的每个候选行转换 tsUpdated 值,以确定哪些行满足您的DCount("[EC#]", "tbl_Data", "[AssocID] = " & GetID & " AND [tsUpdated] >= Date AND [tsUpdated] < (Date + 1)")
子句条件。这意味着引擎无法利用 tsUpdated 上的索引来快速识别候选行。所以不要这样做。
tsUpdated 索引时,这样的方法会更快:
{{1}}
答案 1 :(得分:0)
我的建议是使用
Format([tsUpdated],"mm/dd/yyyy")
并创建一个将tsUpdated转换为ShortDate的查询。 例如:
SELECT
[Field1],
[Field2],
Format([tsUpdated],"mm/dd/yyyy") AS tsUpdated_S
FROM
tbl_Data
保存并调整您的DCount以使用此查询而不是表格。