将当前的只读表单记录更改为可编辑

时间:2015-03-14 17:16:28

标签: vba ms-access access-vba ms-access-2013

我正在使用Microsoft Access 2013创建一个数据库,其中我有一个默认视图为只读的表单,以防止意外编辑。我目前正在尝试包含一个按钮,仅对当前记录进行编辑。我尝试使用DoCmd.OpenForm以可编辑模式打开记录(因为我在其他地方使用该命令打开特定记录),但似乎它无法使用该命令在同一表单中打开记录。

我提前感谢您就如何解决此问题提出任何建议。

2 个答案:

答案 0 :(得分:1)

我从我读过的第一本VBA书中了解到这一点(我认为访问97 VBA for Dummies),我从未见过有人使用Tag属性,因为除了你找到一些东西之外别无其他用途为了。输入"可锁定"在要保护的任何控件(文本框,组合框等)的标记属性中。在表单中添加一个名为btnEdit的按钮。

当您输入记录时,如果控件是新记录,则表格当前事件将解锁控件,如果控件是现有记录,则锁定控件。

然后该按钮将解锁以允许编辑,并在退出记录后重新锁定。我发现这对防止意外编辑非常有效。

 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

答案 1 :(得分:0)

您无法编辑当前记录以外的任何内容。

使用此代码行:

Me.AllowEditions = True

但它没有多大意义,因为你可以这样打开表单。