过去12个月MS Access VBA的总成本
我有一个access数据库表单,我想计算字段[Cost]的总成本,但仅限于过去12个月。我还有一个日期字段,它是记录的完整日期,例如25/09/2020 如果可能的话,我想排除任何尚未结束的月份。例如,如果是9月中旬,我希望将9月排除在外。这不是一个要求,只是一个很好的要求 为了进一步解释,我已经有了所有记录的总数,但我想要另一个只显示过去12个月的总数。我不想手动指定日期范围,如2020年1月1日至2021年1月1日。我希望自动汇总最近12个月的记录,如果不包括不完整的月份,则在添加新记录时/或在开始新的月份时,这些记录将立即更新 我不想使用报告来做这件事,因为这意味着打开一个不同的页面,如果必须这样做,用户将永远不会检查总数 我也不知道如何使用SQL,所以如果能用普通的VBA代码来实现,那将是令人惊讶的过去12个月MS Access VBA的总成本,vba,ms-access,Vba,Ms Access,我有一个access数据库表单,我想计算字段[Cost]的总成本,但仅限于过去12个月。我还有一个日期字段,它是记录的完整日期,例如25/09/2020 如果可能的话,我想排除任何尚未结束的月份。例如,如果是9月中旬,我希望将9月排除在外。这不是一个要求,只是一个很好的要求 为了进一步解释,我已经有了所有记录的总数,但我想要另一个只显示过去12个月的总数。我不想手动指定日期范围,如2020年1月1日至2021年1月1日。我希望自动汇总最近12个月的记录,如果不包括不完整的月份,则在添加新记录时/
编辑。我现在有了公认答案中使用的代码,它现在运行良好。我一辈子都不知道如何计算一个日期范围的总和。唯一的问题是它不会自动更新,但我可以接受。只要它在窗体打开时显示,就可以了。请在文本框的数据源下面的表达式中进行尝试
=DSum("[Cost]","[Table1]","[cDate]>=#" & DateAdd("m",-12,Date()) & "# AND [cDate]<=#" & Date() & "#")
=DSum(“[Cost]”、“[Table1]”、“[cDate]>=#”和DateAdd(“m”、-12,Date())&“#和[cDate]”我会尝试这样的事情:
仅适用于成本:
对于成本和月份;)
注:
DateSerial(Year(Date()),1,1)
基于今天的日期返回今年1月1日:)
DateSerial(年(日期()),月(日期()),0)
基于今天的日期返回上月的最后一天:)
有关更多详细信息,请参阅:谢谢您的帮助,我现在需要它做什么就做什么。除了说明具体日期之外,我无法确定应该如何指定日期范围。
SELECT SUM(yt.Cost) AS SumOfCost
FROM YourTable yt
WHERE yt.DateField BETWEEN DATESERIAL(YEAR(Date), 1, 1)
AND DATESERIAL(YEAR(Date), MONTH(yt.DateField), 1-1)
SELECT FORMAT(yt.DateField, "yyyy-MMM") As CMonth, SUM(yt.Cost) AS SumOfCost
FROM YourTable yt
WHERE yt.DateField BETWEEN DATESERIAL(YEAR(Date), 1, 1)
AND DATESERIAL(YEAR(Date), MONTH(yt.DateField), 1-1)
GROUP BY FORMAT(yt.DateField, "yyyy-MMM")