【问题标题】:How can I get my Access form to prevent editing of a field once saved?如何获取我的访问表单以防止在保存后编辑字段?
【发布时间】:2014-06-23 19:14:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    标签属性通常很有用:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 2012-06-27
        • 2016-04-25
        相关资源
        最近更新 更多