我正在为我所在的公司开发一个ms访问数据库,主要是为了保留员工记录,带薪休假和每月出勤率,但是我还没有想到这个问题。
我将付费休假表格列设置如下:
|ID|Month|Current_Leave|Earned_Leave|Absences|New_Leave|
ID + Month被设置为表的主键
我希望此表能够将多个员工的休假记录保存多个月,并且我将New_Leave设置为计算字段,其中:
(current_leave + earned_leave - absences = new_leave)
但是,我无法弄清楚如何创建一个新记录,其中包含下一个月的重复ID(同一员工),其中Current_Leave =上个月的New_Leave
例如: https://i.stack.imgur.com/lkO9C.png
任何建议?,伪代码可以帮助,执行方法会很棒。
答案 0 :(得分:1)
我没有看到一年的字段,所以我会假设你的月份不是日历月,而是仅仅工作几个月或类似的事情。在这种情况下,如果月份是正确的数字,您可以使用:
NZ(DLookup(" New_Leave"," TableName"," [Month] ="& [Month] -1),0)
如果您不想更改设计以使月份成为正确的数字,则必须处理将文字转换为数字:
NZ(DLookup(" New_Leave"," TableName"," CInt([Month])="& CInt([Month]) - 1 ),0)
如果您的文字月份字段不代表正确的数字,则会失败。
如果您100%确定前一个月将始终存在(月份= 1时不太可能),您可以取消Nz
部分。
说了这么多,我认为你的整体设计存在严重缺陷。解决问题的正确方法是拥有一个包含EmployeeID,Date,LeaveAmount的表(其中,negative表示获得假,或者单独的Yes / No字段表示该表)。这是您需要的唯一静态信息。其他所有内容都应根据需要在表格/报告中计算,而不是在表格中计算。