是否可以让一个字段可编辑,同时在ACCESS 2007中以表格形式将所有其他字段设为只读? 我的表单上有大约40个控件,并且只能逐个读取它们会很不方便。我想让其中一个字段(一个选项组)可编辑,这样当用户选择一个选项时,整个表单就变得可编辑了
答案 0 :(得分:1)
您可以使用VBA过程循环浏览表单的控件集合,并将每个控件的.Locked
属性设置为True
。检查每个控件的.ControlType
属性,并忽略控件,如标签和命令按钮。 IOW,只为那些有意义的控件设置.Locked
。
答案 1 :(得分:1)
选项1
您可以创建要锁定子窗体的窗体,并将选项组放在主窗体中:
例如:
Private Sub Form_Current()
Me.aTable_subform.Form.AllowAdditions = False
Me.aTable_subform.Form.AllowEdits = False
Me.aTable_subform.Form.AllowDeletions = False
End Sub
Private Sub PickOne_AfterUpdate()
Select Case Me.PickOne
Case 1, 3
Me.aTable_subform.Form.AllowAdditions = True
Me.aTable_subform.Form.AllowEdits = True
Me.aTable_subform.Form.AllowDeletions = True
Case 2
Me.aTable_subform.Form.AllowAdditions = False
Me.aTable_subform.Form.AllowEdits = True
Me.aTable_subform.Form.AllowDeletions = False
End Select
End Sub
进一步说明重新评论
选项2
您可以在主窗体打开时打开一个pop-uo表单。在此示例中,它将在主窗体之前显示。
主表格上的代码:
Private Sub Form_Close()
DoCmd.Close acForm, "popupform"
End Sub
Private Sub Form_Load()
DoCmd.OpenForm "popupform", , , , , acDialog
End Sub
Private Sub PickOne_BeforeUpdate(Cancel As Integer)
Select Case Me.PickOne
Case 1
If MsgBox("You chose this. Continue?", vbYesNo) = vbYes Then
Forms!mainform.AllowAdditions = True
Forms!mainform.AllowEdits = True
Forms!mainform.Form.AllowDeletions = True
''Setting the visibility leaves the form
''available but it is no longer a dialog form
''but you must remember to close it elsewhere
''If the form is not needed, just close it here
Me.Visible = False
Else
Cancel = True
End If
Case 2
''Whatever
End Select
End Sub
选项3
每个控件都有一个标签属性,供设计人员使用,例如,你可以添加" Admin"到需要锁定的所有控件。 Yo必须使用load事件或更晚的事件。
Private Sub Form_Load()
For Each ctrl In Me.Controls
''For example:
If ctrl.Tag = "Admin" And TheOption <> "Admin" Then
ctrl.Locked = True
End If
Next
End Sub
您可以轻松拥有多个标记,一个用于管理员用户或OptionX,另一个用于其他用户或OptionY。