MS Access表单上的密码保护提交按钮仍然会导致按钮提交

时间:2010-11-12 19:21:18

标签: ms-access forms access-vba password-protection ms-access-2003

我正在尝试使用密码保护我在Microsoft Access 2003中构建的表单上的提交按钮。单击该按钮时,会向我的数据库添加新记录。密码保护的想法是,当用户单击该按钮时,将出现一个提示,要求输入密码。他们可以输入密码并单击“确定”继续验证输入是否正确,或者他们可以单击“取消”并关闭提示窗口(之后他们将收到确认警报)。如果密码与硬编码匹配,则会添加记录。如果密码不匹配,将显示错误消息。

这应该很容易。但是,无论密码输入不正确,密码未输入,还是用户取消密码窗口,记录都将始终添加到数据库中。我在下面的代码中做错了什么?

Private Sub AddLeadServerButton_Click()
    Dim strPasswd

    strPasswd = InputBox("Enter Password", "Restricted Form")

    'Check to see if there is any entry made to input box, or if
    'cancel button is pressed. If no entry made then exit sub.

    If strPasswd = "" Or strPasswd = Empty Then
        MsgBox "No Input Provided", vbInformation, "Required Data"
        Exit Sub
    End If

    'If correct password is entered open Employees form
    'If incorrect password entered give message and exit sub

    If strPasswd = "thepassword" Then
        DoCmd.GoToRecord , , acNewRec
        Me.Parent!NewInstallation.Form!InstallationLeadServerComboBox.Requery
        Me.Parent!NewReport.Form!LeadServerFilterComboBox.Requery
    Else
        MsgBox "Sorry, you do not have access to this form", _
               vbOKOnly, "Important Information"
        Exit Sub
    End If
End Sub

3 个答案:

答案 0 :(得分:1)

在表单上挂钩BeforeInsert事件,并在那里添加密码检查。如果他们没有提供正确的密码,您可以设置Cancel=True,这将导致放弃添加记录。

示例:

Private Sub Form_BeforeInsert(Cancel As Integer)
    If MsgBox("Insert new record here?", _
        vbOKCancel) = vbCancel Then
        Cancel = True
    End If
End Sub

答案 1 :(得分:1)

要完成所需的行为,您必须设置表单以防止添加新记录。然后,询问用户密码,将表单重新设置为启用添加新记录,然后移至新记录。

  1. 如果属性表不是 显示,在视图菜单上,单击 显示表单的属性 物业单。

  2. 在“表单”属性表中,单击“确定” 单击数据选项卡,然后设置 AllowAdditions属性为否。

  3. 添加命令按钮 形成。设置命令 按钮的OnClick属性为[事件 过程],然后单击生成 OnClick右侧的按钮 财产箱。键入以下内容 Form_Customers中的陈述 模块:

    Forms!Customers.AllowAdditions = True
    
  4. http://support.microsoft.com/kb/208586

    我不建议在用户输入数据后检查密码。填写表格时会感到沮丧,最后却发现你没有权利保存你的工作。

答案 2 :(得分:0)

尽量避免使用绑定表单,这样可以通过一些额外的工作来更好地控制数据,最好的方法就是从相反的两端处理数据。

绑定表单非常关于告诉数据库阻止您不希望进行的更新,而未绑定表单更多的是在您绝对满意之前不做任何更改。

仅仅是个人偏好,但我认为不受约束是值得花时间和精力的。