簡體   English   中英

將當前的只讀表單記錄更改為可編輯

[英]Change current read-only form record to be editable

我正在使用Microsoft Access 2013創建數據庫,在該數據庫中,我具有一個默認視圖為只讀的表單,以防止意外編輯。 我目前正在嘗試包含一個按鈕,以僅允許對當前記錄進行編輯。 我嘗試使用DoCmd.OpenForm在可編輯模式下打開記錄(因為我在其他地方使用該命令來打開特定記錄),但是似乎無法使用該命令在同一表單內打開記錄。

預先感謝您提供有關如何解決此問題的建議。

我從我讀過的第一本VBA書籍中學到了這一點(我認為是Access 97 VBA for Dummies),從那以后我再也沒有見過有人使用Tag屬性,它沒有其他目的,只是讓您找到可以使用的屬性。 在標簽屬性中為要保護的任何控件(文本框,組合框等)輸入“可鎖定”。 將一個名為btnEdit的按鈕添加到您的窗體。

當您輸入一條記錄時,如果Form Current事件是一條新記錄,它將解鎖控件;如果它是現有記錄,則將鎖定控件。

然后,該按鈕將解鎖以允許編輯,並在退出記錄后重新鎖定。 我發現這對於防止意外編輯非常有效。

 Private Sub Form_Current()

 Dim ctlCurr As Control
    'Lock the record if it is not new. Prevents inadvertent edits.
    If Me.NewRecord = False Then
        For Each ctlCurr In Me.Controls
            If ctlCurr.Tag = "Lockable" Then
            ctlCurr.Locked = True
            End If
            btnEdit.Enabled = True
        Next
    End If
    'Unlock a new record for editing.
    If Me.NewRecord = True Then
        For Each ctlCurr In Me.Controls
            If ctlCurr.Tag = "Lockable" Then
            ctlCurr.Locked = False
            End If
        Next
        btnEdit.Enabled = False
    End If  
End Sub

Private Sub btnEdit_Click()
      Dim ctlCurr As Control
        'Unlocks a record for editing.  Requires the operator to make the decision to edit.
        If Me.NewRecord = False Then
            For Each ctlCurr In Me.Controls
                If ctlCurr.Tag = "Lockable" Then
                ctlCurr.Locked = False
                End If
            Next
        End If
    End Sub

除了當前記錄,您無法編輯其他任何內容。

使用以下代碼行:

Me.AllowEditions = True

但這沒有多大意義,因為您可以以這種方式打開表單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM