我试图按时间间隔过滤表单
开始日期和结束日期都在格式为dd/mm/yyyy
我在VBA
中的查询看起来像这样
WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #" & Format(txtStartDate, "dd/mm/yyyy") & "#
AND #" & Format(txtEndDate, "dd/mm/yyyy") & "#)"
我无法弄清楚为什么当时间间隔为01/12/2012
到21/12/2012
时,我的日期为15/08/1991
。这就是为什么我想明确这种格式的原因。
SQL查询的输出为
WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #01/12/2012# AND #21/12/2012#)
我尝试使用和不使用格式。
我错过了什么吗?
注意:SalesCallDate
是SQL Server链接表中的DateTime
字段
谢谢
答案 0 :(得分:1)
听起来txtStartDate和txtEndDate都是未绑定的文本框。将其格式属性设置为日期格式。
使用日期格式并将“显示日期选择器”属性设置为“对于日期”,访问版本> = 2007将为您的文本框启用该日期选择器功能。如果您的用户喜欢这样,这是该格式属性的附带好处。
无论如何,日期格式将允许Access和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\#")