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 - 在插入之前/之后插入/更新触发器需要

如何从 C# 调用 MS Access 数据库宏

Access 2013:我可以使用数据宏触发 MS SQL SP 而不延迟 Access 中的执行吗?

在 ms Access 数据宏中从另一个表中获取数据

在 AfterInsert DataMaco 中使用 VBA 调用时引用刚刚添加的记录

VBA (Ms-Access) 从宏调用成员函数