在 Access 中,我有一個包含日期時間欄位的報告。有一個表單用于收集查詢的用戶輸入,特別是要過濾的查詢的日期From和To日期。
使用以下代碼打開報告:
Dim str as String
str = "DateCreated BETWEEN #" & format(From_Date.value, "yyyy-mm-dd") & "# AND #" & DateAdd("d", 1, format(To_Date.value, "yyyy-mm-dd")) & "#"
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str
在日期格式為 mm/dd/yyyy 或 yyyy-mm-dd 的 Windows 機器上,查詢作業正常。然而,有些用戶將系統日期設定為 dd/mm/yyyy,而 Access 似乎無法識別它。因此,當打開報告并應用過濾器時,它將 08/11/2021(2021 年 11 月 8 日)讀取為 2021 年 8 月 11 日,這顯然給出了錯誤的結果。
我嘗試使用以下方法格式化 WHERE 條件的日期輸入:
使用代碼format(From_Date.value, "yyyy-mm-dd")格式化日期是一個建議的解決方案,但這是行不通的。
為什么 Access 不支持 dd/mm/yyyy 格式?如果沒有,那么我如何按日期范圍正確過濾?
是調整用戶系統日期格式的唯一選項嗎?
謝謝
uj5u.com熱心網友回復:
始終使用引數,切勿將格式化日期連接到 SQL 字串。
如果您在 SQL 字串中使用格式化的日期,那么您將自己設定為失敗,那么意外做錯的可能性是巨大的。
Dim str as String
str = "DateCreated BETWEEN p1 AND p2"
DoCmd.SetParameter "p1", From_Date.value
DoCmd.SetParameter "p2", DateAdd("d", 1, To_Date.value)
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str
閱讀有關 Access 中引數的更多資訊:如何在 Microsoft Access 的不同背景關系中使用 VBA 中的引數?
uj5u.com熱心網友回復:
您可以使用通用日期格式代碼之一(而不是自定義格式字串)來使用系統格式。
Dim str as String
str = "DateCreated BETWEEN #" & format(From_Date.value, "Long Date") & "# AND #" & DateAdd("d", 1, format(To_Date.value, "Long Date")) & "#"
DoCmd.OpenReport "report_name", acViewReport, WhereCondition:=str
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355487.html
