MS Access AfterInsert 宏更新记录
Posted
技术标签:
【中文标题】MS Access AfterInsert 宏更新记录【英文标题】:MS Access AfterInsert macro update record 【发布时间】:2018-03-05 19:02:57 【问题描述】:我对 MS Access 的了解非常有限,但我正在尝试创建一个 AfterInsert 事件。
这是表 (myTable) 上下文-- 该表将是不同部门的目标列表,并且有一个 Active 列。这将允许部门通过创建新记录来更改其#1 目标,将其设置为目标 = 1,然后将目标 = 1 的旧记录更新为活动 = 假。我们想要目标和优先级(目标编号)的运行历史。
AutoID Dept Goal# Goal Active
00001 A 1 My first goal True
00002 A 2 My second goal True
00003 A 3 My third goal True
现在,我想添加一条新记录,因为我们更改了目标一。
00004 A 1 My new first goal True
添加这条新记录后应该做的是设置旧目标1 Active = False。
AutoID Dept Goal# Goal Active
00001 A 1 My first goal False
00002 A 2 My second goal True
00003 A 3 My third goal True
00004 A 1 My new first goal True
I've been trying to adapt this AfterInsert format
LookupRecord In qryDMTermQuery
Where Condition = [EmployeeID]=[tblTerminations].[EmployeeID]
Alias
EditRecord
Alias
Comment Block: Set Active field to False
SetField
Name: [qryDMTermQuery].[Active]
Value: False
End EditRecord
这是我的改编:
LookupRecord In myTable
Where Condition = [dept]=[myTable].[dept]
AND [Goal#] = [myTable].[Goal#]
AND [AutoID] != [myTable].[AutoID]
Alias
EditRecord
Alias
Comment Block: Set Active field to False
SetField
Name: [myTable].[Active]
Value: False
End EditRecord
这是否有意义/这是否符合我的期望?
【问题讨论】:
这是一个 DataMacro 吗?我不使用宏,只使用 VBA。如果您一直在尝试,会发生什么 - 错误消息、错误结果,什么都没有?究竟是什么问题?代码看起来不错,你告诉我们它是否在做你希望的事情。 @June7 使用数据宏没有任何问题。如果您的数据库将在 VBA 可以运行的 Access 前端之外使用,那么宏是确保无论如何您的数据都会发生相同逻辑的唯一方法。 @Brad - 没有说我不使用的任何错误。从来不需要。 OP 没有提到其他平台。 @June7 我不知道这是什么 - 如果您单击 Access 表,在“表”选项卡上,您可以选择选项以针对记录之前或之后发生的不同操作“重新插入,更新。这是插入后的命令。没有抛出错误,但是当我添加新记录时,什么也没发生。 @Jenny,这是一个 DataMacro。活动是/否类型字段吗?建议您不要在命名约定中使用空格、标点符号或特殊字符(下划线是唯一的例外)。最好是 GoalNum 或 Goal_Num。 【参考方案1】:你快到了。不需要[AutoID] != [myTable].[AutoID]
,因为生成的新 ID 显然与现有 ID 不匹配。或者,您可以使用[AutoID] <> [myTable].[AutoID]
【讨论】:
以上是关于MS Access AfterInsert 宏更新记录的主要内容,如果未能解决你的问题,请参考以下文章
MS-ACCESS - 在插入之前/之后插入/更新触发器需要
Access 2013:我可以使用数据宏触发 MS SQL SP 而不延迟 Access 中的执行吗?