Ms access MS Access AfterInsert宏更新记录

Ms access MS Access AfterInsert宏更新记录,ms-access,ms-access-data-macro,Ms Access,Ms Access Data Macro,我对MS Access的了解非常有限,但我正在尝试创建一个AfterInsert事件 这是表(myTable)上下文——该表将是不同部门的目标列表,并有一个活动列。这将允许部门通过创建新记录,将其设置为goal=1,然后将goal=1的旧记录更新为Active=False,从而更改其#1目标。我们需要目标和优先级(目标编号)的运行历史记录 现在,我想增加一个新记录,因为我们改变了目标一 00004 A 1 My new first goal True 在添加新记录后,它

我对MS Access的了解非常有限,但我正在尝试创建一个AfterInsert事件

这是表(myTable)上下文——该表将是不同部门的目标列表,并有一个活动列。这将允许部门通过创建新记录,将其设置为goal=1,然后将goal=1的旧记录更新为Active=False,从而更改其#1目标。我们需要目标和优先级(目标编号)的运行历史记录

现在,我想增加一个新记录,因为我们改变了目标一

00004   A     1      My new first goal  True
在添加新记录后,它应该做的是将old goal 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

这是我的改编:

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

这有意义吗/这正是我所希望的吗

你就快到了。不需要
[AutoID]!=[myTable].[AutoID]
因为生成的新ID显然与现有ID不匹配。或者,您可以使用
[AutoID][myTable].[AutoID]


这是一个DataMacro吗?我不使用宏,只使用VBA。如果您一直在尝试,会发生什么-错误消息、错误结果,什么都没有?到底是什么问题?代码看起来没问题,您可以告诉我们它是否在做您希望的事情。@June7使用数据宏没有任何问题。如果您的数据库将在VBA可以运行的访问前端之外使用,那么宏是确保无论发生什么情况,您的数据都会发生相同逻辑的唯一方法。@Brad-没有说任何错误,只是我不使用。不需要。OP没有提到其他平台。@June7我不知道这是什么——如果你点击一个访问表,在“表”选项卡上,你可以选择在插入、更新记录之前或之后对记录执行不同操作的选项。这是一个后插入命令。没有抛出错误,但当我添加新记录时,什么也没发生。@Jenny,这是一个DataMacro。活动字段是否为是/否类型?建议您不要在命名约定中使用空格、标点符号或特殊字符(下划线是唯一的例外)。最好是进球数或进球数。
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