一旦达到某个阈值,就使用时间戳更新访问中的记录



很抱歉,我在访问方面有点新手,似乎找不到以下问题的解决方案:

我有一个简单的访问数据库,用于监视在一项任务上花费的小时数。当这项活动超过7小时时,我希望更新记录以表明这一事实,可能会有一个时间戳,表明超过这一时间的月份和年份。

关于在任务上花费的小时数的信息将在一个月的某一天手动输入,7个小时以上的小时数可以在几个月内收集。然而,有必要根据数据生成报告,其中列出了超过7小时的任务数量,以及发生这种情况的月份。

我如何设置自动规则/操作以更新7小时阈值的记录?(每个记录当前包含一个字段,记录的运行总小时数)

如果您使用Form向表中插入新记录,可以通过多种方法实现这一点。如果你对VBA 有一些了解,这也会有所帮助

如果您使用的是MS Access 2013,您也可以使用数据宏(MS Access等效于SQL Server触发器)。

假设您使用较低版本的Access,并假设您使用Form将数据插入/更新到表中,则可以执行以下操作:

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字段的默认值,那么您将获得达到七小时的日期和时间。您可以为报表查询筛选所有达到"是"的时间的记录。

最新更新