【发布时间】:2018-02-08 17:29:44
【问题描述】:
我创建了一个登录表单,其中包含用于用户类型(管理员、用户)的组合框和用于密码的文本框。表单的代码如下。
Private Sub txtPassword_AfterUpdate()
If IsNull(Me.cboUser) Then
MsgBox "You need to select a user!", vbCritical
Me.cboUser.SetFocus
Else
If Me.txtPassword = Me.cboUser.Column(2) Then
If Me.cboUser.Column(3) = True Then
MsgBox "Password does not match, please re-enter!", vboOkOnly
Me.txtPassword = Null
Me.txtPassword.SetFocus
End If
DoCmd.OpenForm "FE1"
Me.Visible = False
Else
MsgBox "Password does not match, please re-enter!", vboOkOnly
Me.txtPassword = Null
Me.txtPassword.SetFocus
End If
End If
End Sub
Private Sub cboUser_AfterUpdate()
Forms!frmLogin!cboUser.Column (2)
End Sub
如果以用户身份登录,当他们进入 FE1 表单时,我希望他们能够阅读表单,而不是进行任何更改。我一直在尝试使用的代码如下:
Private Sub Form_Open()
If Forms!frmLogin!cboUser.Column(2) = 2 Then
Me.AllowEdits = False
Me.AllowAdditions = False
Me.AllowDeletes = False
Else
Me.AllowEdits = True
Me.AllowAdditions = True
Me.AllowDeletes = True
End If
End Sub
但我不断收到错误:
您输入的表达式 On Open 作为事件属性设置 产生以下错误:过程声明没有 匹配具有相同名称的事件或过程的描述。
*表达式可能不会产生宏名称、用户定义函数名称或[事件过程]。 *评估函数、事件或宏时可能出现错误。
可能我只是看这个太久了,但我不知道我哪里出错了!?
【问题讨论】:
-
确保您的
Form.OnOpen属性设置为"[Event Procedure]"。此错误往往会发生,但实际上并非如此。 -
这里是公平的警告,如果这些密码只是为了让数据库更易于使用,那很好,但希望你知道这不会提供任何安全性。
-
Form.OnOpen 设置为“[事件过程]”。
-
对于这个数据库来说,高级别的安全性并不是必须的。