我将Access 2007数据库中的记录保存到一个简单的2列表中,并使用此查询从中生成报告:
sql = "SELECT
OrderDate AS `Order Date and Time`,
Items AS `Ordered Items`
FROM Orders
WHERE Format(Orders.OrderDate,'mm/dd/yyyy')
>= Format(#" + startDate.Value.Date + "#,'mm/dd/yyyy')
AND Format(Orders.OrderDate,'mm/dd/yyyy')
<= Format(#" + endDate.Value.Date + "#,'mm/dd/yyyy')
ORDER BY OrderDate"
startDate
和endDate
是VB.2010中的datePicker对象。
当startDate
和endDate
在同一年内时,会按预期生成报告。因此,例如,如果我在11月18日和12月27日之间检查订单,我会得到预期的结果。但是,如果我去,从2012年11月1日到2013年1月8日,它没有显示任何记录,即使所有这些月(11月,12月和1月)都有记录。
可能出现什么问题?
答案 0 :(得分:3)
使用查询中的实际日期,而不是格式化日期。类似的东西:
SELECT OrderDate, Items
FROM Orders
WHERE Orders.OrderDate BETWEEN #startDate.Value.Date# AND #endDate.Value.Date#
ORDER BY OrderDate;
http://www.databasedev.co.uk/sql-between.html
或者,如果您想保留原始查询,请尝试更改日期的格式,以便年份最重要,然后是月份和日期,因此:
SELECT OrderDate AS `Order Date and Time`, Items AS `Ordered Items`
FROM Orders
WHERE Format(Orders.OrderDate,'yyyy/mm/dd') >= Format(#" + startDate.Value.Date + "#,'yyyy/mm/dd')
AND Format(Orders.OrderDate,'yyyy/mm/dd') <= Format(#" + endDate.Value.Date + "#,'yyyy/mm/dd')
ORDER BY OrderDate;