1

我有一个表格作为我的一张桌子的前端。将此表视为与几乎所有其他表相关的顶级表。填写完此表单后,尤其是其他表格也填写完毕后,我真的不希望有人回来编辑该顶级表单中的某些字段。这样做真的会改变整个系统的逻辑。这类似于如果我有一个我拥有的不同运输设备的历史维护记录数据库,并且在 20 年后将其中一辆汽车从汽车换成飞机。历史记录将不再有意义。

所以我希望一旦保存记录,我不希望某些字段被编辑。删除整个记录并重新开始就可以了,更改其他字段就可以了。只是不改变某些领域。此外,如果用户是第一次创建记录,改变主意应该没问题。但是一旦记录被保存,那就应该结束了。

我主要对使用 VBA 在表单级别防止这种情况感兴趣。我认为不可能在数据库级别保护它。

我在想 OnCurrent 中的某些东西,并检查 Auto-Incremented ID 是否为空,然后编辑就可以了,但如果 ID 有值,那么没有编辑?

4

2 回答 2

2

tag 属性通常很有用:

For Each ctl In Me.Controls
    If ctl.Tag = "SysLock" Then
        ctl.Locked = (Not Me.NewRecord)
<...>

之后,我建议您确保您的表具有创建时间戳和更新时间戳。编写这些内容后,您可以阻止编辑。例如,在最后半小时内创建的任何记录都可能是公平竞争的。

于 2012-08-08T18:54:37.410 回答
1

您甚至可以指定某种 VBA 甚至 OnCurrent 来查找正在查看的记录中是否存在数据 - 然后告诉它将输入框更改为 Enabled = No 和 Locked = Yes - 这样,没有办法要在这些字段中输入的数据,甚至无法在 Tab 键顺序中选择它们(如果我没记错的话)。

于 2012-08-08T18:39:39.440 回答