Microsoft Access:创建后使列成为只读

时间:2013-07-25 03:39:38

标签: ms-access macros lookup data-integrity

我是微软Access的新手(第一次使用它),我想尝试一下,考虑到它就像是Microsoft Excel和SQL Server的混搭,我对后者非常熟悉。我想要做的是在插入新行后让一个字段(例如Category)为只读。此Category字段是查找vlue,数据宏将在创建时在该对应子表中创建具有该特定类别的记录。而且我不希望它在创建后改变,因为这将导致很多麻烦。

我有什么方法可以在表格中这样做吗?有什么方法可以限制用户吗?或者有解决方法吗?让我知道,我会考虑所有选项,非常感谢你!

2 个答案:

答案 0 :(得分:2)

使用表单的当前事件。每次记录成为活动记录时,该事件都会触发。那时,如果当前记录是“new”记录,请启用文本框。但是对于现有记录,请禁用文本框以防止用户更改其存储值。

因此,如果文本框名为 txtFoo ,则您的Form_Current程序可能是这样的......

Private Sub Form_Current()
    If Me.NewRecord = True Then
        ' allow edit
        Me.txtFoo.Enabled = True
    Else
        ' prevent edit
        Me.txtFoo.Enabled = False
    End If
End Sub

或者更简洁地说同样的事情......

Private Sub Form_Current()
    Me.txtFoo.Enabled = Me.NewRecord
End Sub

Enabled属性外,还要考虑Locked属性。要么独自一人可以做你需要的。或者你可以使用两者。测试各种组合以查看您喜欢的组合。

答案 1 :(得分:2)

限制用户访问权限的最佳/最简单方法取决于您首先授予他们访问权限的应用程序的哪些方面。

根据您的情况和描述,您的宏似乎实际上正在执行数据表的更新/操作,并且您的用户通过表单访问该数据?对于大多数应用程序来说,这是一种理想的技术,因为您可以将整个表格显示在表单中,但在表单的设计选项中,您可以自定义视图并访问用户。

如果您正在使用该技术,让您的用户通过表单访问数据,则可以非常轻松地限制用户操纵表数据的能力,而无需使用任何VBA进行干预。如果您对Access的使用经验有限,我认为您可以更轻松地使用可以使用属性菜单更改的表单选项来修改此访问权限。这也可以防止您必须修改表单以获得“has module”属性。

要使表单字段只读,您只需

  1. 打开表单
  2. 切换到布局视图或设计视图(您可以修改其中的属性)
  3. 打开属性表(通过“设计”功能区中的“属性表”按钮)
  4. 选择您想要设为只读的字段
  5. 在“属性表”的“数据”选项卡中,有一个名为“已锁定”的属性。将此属性切换为“是”
  6. 这将使用户无法改变字段! (从那个表格)

    选项二:

    如果您希望用户只在普通数据表视图中查看表(而不是表单),可以通过使用“OpenTable”(数据库对象列表)的宏打开它们,并将数据模式设置为“读取”只要”。重要提示:这将使用户无法编辑任何字段!如果您需要它们能够编辑其他字段,则无法使用此选项。

    HansUp的解决方案: 需要注意的重要事项(因为您是新用户) 要使用此VBA,您需要在该表单的属性表中进行以下更改:

    1. 选择“表单”作为对象
    2. 将“HasModule”属性(在“属性表”的“其他”选项卡中)更改为“是”
    3. 此外,我无法找到一种简单的方法来获取Form Current属性。另一种方法是使用“On Got Focus”(在“事件”选项卡中)通过他建议的VBA过程将该文本框的属性设置为“已禁用”。