无法使AfterUpdate宏工作

时间:2018-04-16 08:46:54

标签: ms-access

您好我想在Access 2013中的字段中自动更新属性的值,如果该字段中的其他属性已被编辑。

在数据库后端我选择了我想要处理的表,然后单击功能区中的AfterUpdate选项卡我输入这些步骤并保存它,但是当我更新DATE_OF_DEATH字段并且没有时,似乎没有任何事情发生生成错误信息,所以我甚至无法调试该东西,我不知道宏是否被触发,或者如果IF语句失败或者如果SetField语句失败,我完全在暗。我真的很感激一些关于解决这个问题的建议。感谢。

代码如下。

If Updated([DATE_OF_DEATH])
    EditRecord
        SetField
            Name OUTCOME
            VALUE = "test"
    End EditRecord
End If

1 个答案:

答案 0 :(得分:1)

Access数据宏中刚刚插入或更新的记录是只读的(就像在SQL Server或其他带触发器的解决方案中一样)。您应该在表USysApplicationLog中看到一个错误。但是,您可以查找刚刚插入的行,然后对其进行修改。

您可以使用以下宏代码:

SetLocalVar
    Name            NewID
    Expression      =[ID]
If Updated([DATE_OF_DEATH])
    For Each Record In  MyTable
    Where Condition     =[ID]=[NewID]
        EditRecord
            SetField
                Name    OUTCOME
                Value   ="test"
        End EditRecord
End If

这将要求您的记录具有唯一标识符。没有唯一的标识符,我认为你无法做到这一点。您可以尝试使用 Before Change 宏来编辑当前更新的记录,并使用IsInsert仅影响更新,但遗憾的是,这些记录无法访问Updated功能。