我根据Access 2007学生模板为假日俱乐部设置了出席表格。经过一些修改后,我的工作方式正是如此。
客户要求的东西包括记下每天孩子的费用。这很容易做到,但我也想知道是否可以在Access中自动计算每个日历周的总成本?
因此,例如,或许另一个表使用学生详细信息,但只显示总费用 - 从每周的星期一开始记录导航?但是我该怎么做呢?
答案 0 :(得分:1)
如果您想要每位学生每周费用,可以在DatePart()
查询中使用GROUP BY
:
SELECT
y.Student,
Year(y.[Attendance Date]) AS year_number,
DatePart('ww', y.[Attendance Date], 2) AS week_number,
Sum(y.Cost) AS SumOfCost
FROM YourTable AS y
GROUP BY
y.Student,
Year(y.[Attendance Date]) AS year_number,
DatePart('ww', y.[Attendance Date], 2) AS week_number
ORDER BY 1, 2, 3;
第三个DatePart()
参数是 firstdayofweek ,2是VBA常量 vbMonday 的值。但是你不能在查询中使用常量名称,所以这就是我提供常量值的原因。
注意DatePart()
支持可选的第4个参数 firstweekofyear 。如果根据我的建议编号的周数不能令人满意,请查看是否可以使用 firstweekofyear 来根据自己的喜好调整编号。如果仍然没有按照您的意愿对周数进行编号 - 也许您的组织使用自定义周数策略---您可能需要创建一个参考表来存储每个出勤日期的周数
答案 1 :(得分:0)
我在SQL中尝试这样的事情。
Select [Student], [AttendanceDate], [Cost]
From [ModifiedStudentsTable]
WHERE Year([AttendanceDate])* 53+DatePart("ww", [AttendanceDate]) = Year(Date())* 53+DatePart("ww", Date()) - [VariableEnteredInYourForm]
;
[VariableEnteredInYourForm]是一个值
1 = last week
2 = the week before that.