2012-12-14 198 views
2

我試圖篩選形式的時間間隔問題比較日期格式相同

開始日期和結束日期都在一個文本框,這種格式dd/mm/yyyy

我的查詢中VBA看起來是這樣的

WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #" & Format(txtStartDate, "dd/mm/yyyy") & "# 
AND #" & Format(txtEndDate, "dd/mm/yyyy") & "#)" 

我想不通爲什麼當時間間隔爲01/12/201221/12/2012,我喜歡日期15/08/1991。這就是爲什麼我想要明確格式。

輸出爲SQL查詢
WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #01/12/2012# AND #21/12/2012#)

我試着用和不用的格式。

我錯過了什麼嗎?

注意SalesCallDate是在SQL Server鏈接表DateTime

謝謝

回答

1

這聽起來像txtStartDate和txtEndDate都綁定文本框。將它們的格式屬性設置爲日期格式。

text box with Format set to General Date

隨着日期格式,「顯示的日期選擇器」屬性設置爲「對於日期」,Access版本> = 2007將使您的文本框日期選擇器功能。如果你的用戶喜歡這樣,那麼這是格式屬性的一個好處。

反正日期格式將允許訪問和VBA解釋這些文本框的值作爲日期/時間數據類型:

? TypeName(Forms!frmDateRange!txtStartDate.Value) 
Date 

然後因爲SalesCallDate的日期/時間類型,您的WHERE子句可以直接比較的場到文本框的值。

WHERE SalesCallDate BETWEEN 
     Forms!frmDateRange!txtStartDate 
    AND Forms!frmDateRange!txtEndDate 

或者,如果在窗體中有代碼生成一個包含SQL語句的字符串,並希望日期範圍日期/時間文字...

"WHERE SalesCallDate BETWEEN " & _ 
    Format(Me.txtStartDate, "\#yyyy-m-d\#") 
    " AND " & Format(Me.txtEndDate, "\#yyyy-m-d\#") 
+0

謝謝!它僅適用於格式模式中的#號。我本人從未發現過。 – Marc