锁定窗体数据不被修改的几种方法
设置窗体的AllowEdids属性
允许编辑 AllowEdits 设置此窗体是否可更改数据.前提是此窗体绑定记录源
Me.AllowEdits=False
2. 循环所有字段,设置它的Enabled =False (可用为假) 或 Locked=True (锁定为真)
For each ctr in Me.Controls
If Typeof ctr is TextBox then
ctr.Enabled =False
ctr.Locked=True
End If
Next
3. 设置窗体的记录集类型
Me.RecordsetType=2 '快照 2 绑定到其字段的表和控件都不能编辑。
相关知识:
RecordsetType 属性
使用 RecordsetType 属性可以指定何种类型的记录集可以在窗体中使用。可读写。
expression.RecordsetType
expression 必需。返回“应用于”列表中的一个对象的表达式。
说明
RecordsetType 属性在 Microsoft Access 数据库 (.mdb) 中使用以下设置:
设置 Visual Basic 说明
动态集 0 (默认值)对基于单个表或基于具有一对一关系的多个表的绑定控件可以编辑。对于绑定到字段(基于一对多关系的表)的控件,若未启用表间的级联更新,则不能编辑位于关系中的“一”方的联接字段中的数据。有关详细信息,请参阅从查询中更新记录时主题中的有关解释。
动态集(不一致的更新) 1 所有绑定到其字段的表和控件都可以编辑。
快照 2 绑定到其字段的表和控件都不能编辑。
注释 如果不希望在窗体位于“窗体”视图或“数据表”视图时编辑绑定控件中的数据,则可以将 RecordsetType 属性设置为“快照”。
RecordsetType 属性在 Microsoft Access 项目 (.adp) 中使用以下设置:
设置 Visual Basic 说明
快照 3 绑定到其字段的表和控件都不能编辑。
可更新快照 4 (默认值)所有绑定到其字段的表和控件都可以编辑。
注释 可以使用窗体的属性表、宏或 Visual Basic 来设置该属性。
注释 更改打开的窗体或报表的 RecordsetType 属性时,将会引起自动重新创建记录集。
可以基于其字段绑定到窗体控件的多个基础表创建窗体。根据 RecordsetType 属性设置的不同,可以设置能够编辑哪些绑定控件。
除了由 RecordsetType 提供的编辑控件之外,窗体上的每个控件都有一个 Locked 属性,可用来指定控件及其基础数据是否可以编辑。如果 Locked 属性设为“是”,则不能编辑数据。
示例
在下面的示例中,只有当用户 ID 为 ADMIN 时,才允许更新记录。如果公用变量 gstrUserID 的值不是 ADMIN,则该代码示例会将 RecordsetType 属性设置为“快照”。
Sub Form_Open(Cancel As Integer)
Const conSnapshot = 2
If gstrUserID <> "ADMIN" Then
Forms!Employees.RecordsetType = conSnapshot
End If
End Sub