我有一个表单作为我的一个表的前端。可以将此表视为顶级表,几乎所有其他表都与之相关。一旦填写了这个表格,特别是一旦其他表格也被填满,我真的不希望有人回来编辑那个顶级表格中的一些字段。这样做会真正改变整个系统的逻辑。如果我拥有一个我拥有的不同运输设备的历史维护记录数据库,并且在20年后将其中一辆车从汽车改为飞机,就会有类似的情况。历史记录不再有意义了。
所以我希望如果保存记录,我不希望某些字段被编辑。删除整个记录并重新开始就可以了,更改其他字段就可以了。只是不改变某些领域。此外,如果用户第一次创建记录,则可以改变主意。但是一旦保存了记录,那应该是它的结束。
我主要希望在表单级别使用VBA来防止这种情况。我不认为可以在数据库级别保护它。
我正在考虑OnCurrent中的某些内容,并检查自动增量ID是否为空,然后编辑是正常的,但如果ID有值,则不进行编辑?
答案 0 :(得分:2)
标签属性通常很有用:
For Each ctl In Me.Controls
If ctl.Tag = "SysLock" Then
ctl.Locked = (Not Me.NewRecord)
<...>
之后,我建议您确保您的表具有创建时间戳和更新时间戳。写完这些后,您可以阻止编辑。例如,可能是在过去半小时内创建的任何记录都是合理的。
答案 1 :(得分:1)
您可以指定某种VBA甚至OnCurrent来查找正在查看的记录中是否存在数据 - 然后告诉它将输入框更改为Enabled = No和Locked = Yes - 这样,有无法将数据输入这些字段,甚至无法在Tab顺序中选择它们(如果我没记错的话)。