2013-03-26 60 views
1

是否有可能在ACCESS 2007中使所有其他人以只读格式离开某个字段进行编辑? 我的表单上有大约40个控件,并且只能一个一个读取,这样会很不方便。我想有这些领域之一(选项组)编辑,这样,当用户选择一个选项,整个形式变为可编辑如何在Access 2007窗体中选择性地编辑字段?

回答

1

你可以使用VBA程序来遍历窗体的控件集合和每个控件的.Locked属性设置为True。检查每个控件的.ControlType属性,并忽略这些标签和命令按钮的控件。 IOW,只为那些有意义的控件类型设置.Locked

+0

这将需要我列出所有需要锁定在代码中的控件的名称,对吧? – user1175126 2013-03-28 10:22:07

+0

我不明白你为什么需要列出控件名称。下面是通过Controls集合循环的一个示例:http://stackoverflow.com/a/15349725/77335 – HansUp 2013-03-28 14:48:09

1

选项1

你可以做你想要锁定的子窗体形式,把选项组的主要形式有:

sample form

例如:

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 

其他注释re comment

选项2

你可以有主窗体打开时打开弹出式UO形式。在这个例子的主窗体之前它将变得可见。

代码的主要形式:

Private Sub Form_Close() 
    DoCmd.Close acForm, "popupform" 
End Sub 

Private Sub Form_Load() 
    DoCmd.OpenForm "popupform", , , , , acDialog 
End Sub 

pop-up form

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”添加到需要锁定的所有控件。哟必须使用加载事件,或以后的事件。

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 

您就可以轻松拥有多个标签,一个是说的管理员用户或选项X,另一个为其他用户或OptionY。

+0

这听起来不错。但是,我在主窗体本身和子窗体上有很多控件。在类似的路线上,如果我创建一个嵌入此选项组的子表单,我希望表单在从该选项组中选择值时解锁。 – user1175126 2013-03-28 10:20:30

+0

不,它不能以这种方式工作,因为子窗体也会被主窗体上的AllowEdits锁定。 – Fionnuala 2013-03-28 11:22:12

+0

我已经添加了一些其他选项。 – Fionnuala 2013-03-28 11:34:31

相关问题