访问 VBA 将 DateTime 转换为 DCount 中的短日期
Access VBA Converting DateTime to Short Date in DCount
我正在使用 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
我的建议是使用
Format([tsUpdated],"mm/dd/yyyy")
并创建一个将 tsUpdated 转换为 ShortDate 的查询。
例如:
SELECT
[Field1],
[Field2],
Format([tsUpdated],"mm/dd/yyyy") AS tsUpdated_S
FROM
tbl_Data
保存并调整您的 DCount 以使用此查询而不是 table。
DateValue(Now)
returns 与 Date()
相同的 Date/Time 值。因此,您可以 CurDate = Date
而不是 CurDate = DateValue(Now)
。但是,我没有看到保存 CurDate 变量中的值有任何好处;需要的时候就用Date()
。
更令人担忧的是"Converting DateTime to Short Date in DCount"。这意味着数据库引擎必须从 tbl_Data 的每个候选行转换 tsUpdated 值以确定哪些行满足您的 WHERE
条款标准。这意味着引擎无法利用 tsUpdated 上的索引来快速识别候选行。所以不要那样做。
使用 tsUpdated 索引这样的方法会更快:
DCount("[EC#]", "tbl_Data", "[AssocID] = " & GetID & " AND [tsUpdated] >= Date AND [tsUpdated] < (Date + 1)")
我正在使用 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
我的建议是使用
Format([tsUpdated],"mm/dd/yyyy")
并创建一个将 tsUpdated 转换为 ShortDate 的查询。 例如:
SELECT
[Field1],
[Field2],
Format([tsUpdated],"mm/dd/yyyy") AS tsUpdated_S
FROM
tbl_Data
保存并调整您的 DCount 以使用此查询而不是 table。
DateValue(Now)
returns 与 Date()
相同的 Date/Time 值。因此,您可以 CurDate = Date
而不是 CurDate = DateValue(Now)
。但是,我没有看到保存 CurDate 变量中的值有任何好处;需要的时候就用Date()
。
更令人担忧的是"Converting DateTime to Short Date in DCount"。这意味着数据库引擎必须从 tbl_Data 的每个候选行转换 tsUpdated 值以确定哪些行满足您的 WHERE
条款标准。这意味着引擎无法利用 tsUpdated 上的索引来快速识别候选行。所以不要那样做。
使用 tsUpdated 索引这样的方法会更快:
DCount("[EC#]", "tbl_Data", "[AssocID] = " & GetID & " AND [tsUpdated] >= Date AND [tsUpdated] < (Date + 1)")