1

ACCESS 2007 のフォームで、フィールドを編集可能のままにし、他のすべてのフィールドを読み取り専用にすることはできますか? 私のフォームには約 40 個のコントロールがあり、1 つずつしか読み取れないようにするのは不便です。ユーザーがオプションを選択するとフォーム全体が編集可能になるように、これらのフィールドの1つ(オプショングループ)を編集可能にしたい

4

2 に答える 2

1

VBA プロシージャを使用して、フォームの Controls コレクションをループ処理し、各コントロールの.Lockedプロパティを に設定できますTrue。各コントロールの.ControlTypeプロパティを確認し、ラベルやコマンド ボタンなどのコントロールを無視します。IOW は、.Locked意味のあるタイプのコントロールのみに設定されます。

于 2013-03-26T16:52:01.107 に答える
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」を追加できます。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

複数のタグを簡単に作成できます。1 つは管理者ユーザーまたは OptionX 用で、もう 1 つは他のユーザーまたは OptionY 用です。

于 2013-03-26T17:17:00.777 に答える