2013-03-26 112 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

相關問題