【发布时间】:2019-08-19 19:19:27
【问题描述】:
MS Office 365 专业增强版,Access 2007 - 2016
在使用“插入后”触发器插入表中的字段后,我尝试/未能更改该字段的值。像这样的...
EditRecord
SetField
Name orig_id
Value = [mytable].[id]
End EditRecord
这似乎不起作用。
USysApplicationLog 给出...
SourceObject = mytable.AfterInsert
DataMacro InstanceID = {489D5697-5247-44A8-AE3C-3773A25F72E5}
Error Number = -20335
Category = Execution
Object Type = Macro
Description = EditRecord failed because the default alias represents a record which is read only.
该字段不是只读的。事后我可以编辑它就好了。我不知道“默认别名”是什么,甚至是什么意思。
如果触发器不能做到这一点,你能想出另一种方法来完成同样的事情吗?
【问题讨论】:
-
我从未使用过数据宏。我根本不使用任何宏。为什么需要更改 ID 值?
-
我试图复制这个。 DataMacro 不出错 - 不执行任何操作,字段值未更改。为什么将 [mytable] 引用为值的来源?
-
实际归档是一个日期字段,用于标识任务预计何时完成(称为“expected_finish”)。客户可以更改该值,但他们也想知道在任何更改之前它最初是什么。所以我添加了一个名为“initial_expected_finish”的列。在最初插入记录时设置该值对我来说很有意义。我想我可以要求用户输入值,然后让更新前触发器拒绝除相同条目之外的所有内容,但他们不会喜欢这样。
-
initial_expected_finish 可以由 DefaultValue 属性设置,然后表单上的文本框可以被锁定,因此无法编辑,只能查看。
标签: ms-access