达到特定阈值后,使用时间戳更新访问中的记录

时间:2012-12-06 23:57:58

标签: ms-access

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

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

有关在该任务上花费的小时数的信息将在该月的一个特定日期手动输入,并且可以在数月内收集7小时以上。但是,必须能够根据数据生成报告,并指出有多少任务超过7小时,以及在哪个月发生了这种情况。

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

1 个答案:

答案 0 :(得分:0)

如果您使用表单将新记录插入表格,则可以通过多种方式执行此操作。如果您对VBA有一些了解,那也会有所帮助

如果您正在使用MS Access 2013,则还可以使用数据宏(MS Access等效的SQL Server触发器)。

假设您使用较低版本的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字段的默认值,您将获得达到第7小时的日期和时间。您可以将报告查询中包含sevethhourreached的所有记录筛选为“是”。