表格过滤日期结果返回dd / mm / yyyy和mm / dd / yyyy

时间:2016-11-21 06:34:44

标签: sql ms-access access-vba

拥有包含2个日期字段和金额字段的MS Access表单。

这个想法是允许用户对表单应用过滤器来过滤2个日期之间和某个数量之上的结果。但是结果不一致,并且它倾向于列出结果中mm/dd/yyyydd/mm/yyyy格式的两个日期。我只想要dd/mm/yyyy这就是短日期和系统日期的设置。

strCriteria = 
            "([Order Date] >= #" & Me.txtOrderDateFrom & "# 
                AND [Order Date] <= #" & Me.txtOrderDateTo & "# 
                And [Order Amount]>= " & (CLng(Me.txtSumOfLinePrice)) & ")"

task = "select * from OrderListQ where (" & strCriteria & ") order by [order date]"

DoCmd.ApplyFilter task

2 个答案:

答案 0 :(得分:0)

您必须为日期值的字符串表达式应用适当的格式:

strCriteria = "[Order Date] >= #" & Format(Me!txtOrderDateFrom.Value, "yyyy\/mm\/dd") & "# AND [Order Date] <= #" & Format(Me!txtOrderDateTo.Value, yyyy\/mm\/dd") & "# And [Order Amount] >= " & Str(Me!txtSumOfLinePrice.Value) & ""

答案 1 :(得分:-1)

为了避免任何日期格式问题,我发现使用DD MMM yyyy格式可以在服务器和机器上运行 2016年1月10日比2016年10月1日或2016年1月10日更可靠

strCriteria = "[Order Date] >= #" & Format(Me!txtOrderDateFrom.Value, "dd MMM yyyy") & "# AND [Order Date] <= #" & Format(Me!txtOrderDateTo.Value, dd MMM yyyy") & "# And [Order Amount] >= " & Str(Me!txtSumOfLinePrice.Value) & ""

对于有问题使用格式的人(日期,&#34;长日期&#34;)