如果您使用表单将新记录插入表中,有多种方法可以执行此操作。如果您对 VBA 有所了解,这也会有所帮助
如果您使用的是 MS Access 2013,您还可以使用数据宏(SQL Server 触发器的 MS Access 等效项)。
假设您使用的是较低版本的 Access 并假设您正在使用表单将数据插入/更新到表中,可以执行以下操作:
1. Create a query that summarize all hours spent group by taskID (*SELECT TaskID, SUM(Task_Hours) AS TotalHours FROM Tasks GROUP BY TaskID* let call this Query TasksTotals)
2. Modify your Tasks table to Include Date/Time you can call it TaskDate) and another field called SeventhHourReached with a Boolean or a text value to be Yes or No
3. Create another Query that filters all tasks that have already reached the 7th hours (SELECT TaskID FROM Tasks Where SevethHourdReached ="Yes" GROUP by TaskID) - Lets call this query Tasks7H
现在你需要做一些 VAB
在您的表单的当前事件过程中或在更新后的表单字段小时数
中,在 VBA 中使用以下事件过程
If DLookup("TotalHours", "TasksTotals", "TaskID = " & Me.TaskID &"") >= 7 Then
If DLookup("TaskID", "Tasks7h", "TaskID = " Me.TaskID & "") <> Me.TaskID Then
Me.SevethHoursReached = "Yes" ----- This is you used a text field
End If
End if
确保 SevethHourReached 字段显示在您的表单上,但已禁用或锁定或禁用并锁定。
对于您的报告,如果您刚刚使用函数 now() 作为 TaskDate 字段的默认值,您将获得到达第七个小时的日期和时间。您可以为您的报告查询过滤所有 sevethhourreached 为 yes 的记录。