2

抱歉,我在访问方面有点新手,我似乎无法找到以下解决方案:

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

有关在任务上花费的小时数的信息将在一个月中的某一天手动输入,并且可以在多个月内收集 7 个以上的小时数。然而,有必要能够从数据中生成报告,其中显示有多少任务超过了 7 小时,以及这发生在哪个月。

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

4

1 回答 1

0

如果您使用表单将新记录插入表中,有多种方法可以执行此操作。如果您对 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 的记录。

于 2014-10-10T18:29:16.587 回答