我有一个查询(在MS Access 2013中),该查询为我提供了按日期分类的各种项目的销售额,用于下一个12mo的每一天。在另一张表格中,我将每件商品的采购时间设定为30到90天。 我创建了一个查询,对于每个项目,我计算的未来日期根据交货期,使用:Access中的DSUM会在随机记录中产生空值
FutureDate: DateAdd("d",[Leadtime],Date())
我验证了销售查询存在的所有项目,所有FutureDates是存在于该记录中销售。
我需要计算现在和每个项目的计算[FutureDate]之间的每日销售总和,以获得每个项目的唯一订货时间内的预期销售总量。
我试图函数DSUM()与怪异的结果:
每天销售的查询已经排除了任何以往的销售,所以我的第一个尝试是:
TotalSalesInLeadtime: DSUM("DailySales","Sales","[DayOfSale]<=#" & [FutureDate] & "# AND [Item]='" & [SearchedItem] &"'")
对于一些项目,[TotalSalesInLeadtime]计算正确,而其他人评估为空。
然后我想:现在
TotalSalesInLeadtime: DSUM("DailySales","Sales","[DayOfSale] BETWEEN #" Date() "# AND #" & [FutureDate] & " AND [Item]='" & [SearchedItem] &"'")
,结果则相反。 [TotalSalesInLeadtime]值现在正确地显示之前显示为空的项目,并且对于以前正确评估的项目为空。
我从来没有想过为什么DSUM()这样做。
要解决的DSUM()毛刺,我与嵌入式子查询,它正确地产生所有的值,尽管在显著的性能损失去:
SELECT [PurchItem],
(SELECT Sum([DailySales]) AS SumOfSales
FROM [Sales]
WHERE ([Item]=[LeadtimeItems].[PurchItem]) AND ([DayOfSale] Between Date() AND [LeadtimeItems].[FutureDate]))
As TotalSalesInLeadtime
FROM LeadtimeItems
如果任何人有一个线索,为什么DSUM可能表现这样,我会很感激帮助。 DSUM在工作时似乎更快。
你的机器不会碰巧使用'dd/mm/yyyy'的日期格式吗? –
是的,数据库使用dd/mm/yyyy格式。你在做什么,我想? – JavierR