【发布时间】:2016-01-05 00:58:45
【问题描述】:
请帮忙 我有一个登录表单,其中组合框包含 3 个字段(员工 ID、员工姓名:[FirstName] & "" & [LastName]、JobTitle - qry 选择)。在下拉列表中仅显示一个字段(属性设置为 0'、1'、0' 宽度)。 frmLogin 还包含一个用于输入密码的文本框,并且有两个隐藏的文本框(名称和 JobTitle 用于执行其他功能)。当我选择用户名时,会填充隐藏框;但是,当我输入密码时,弹出窗口显示运行时错误“2471” - 您作为查询参数输入的表达式产生了以下错误:“admin”。
这是登录代码。
Private Sub cmdLogin_Click()
If IsNull(Me.cboLoginName) Or Me.cboLoginName = "" Then
MsgBox "You must select an employee name.", vbOKOnly, "Required data"
Me.cboLoginName.SetFocus
Exit Sub
End If
If IsNull(Me.tbxPassword) Or Me.tbxPassword = "" Then
MsgBox "You must enter a password", vbOKOnly, "Required data"
Me.tbxPassword.SetFocus
Exit Sub
End If
'next line is highlighted as error
If Me.tbxPassword.Value = DLookup("Password", "tblEmployees", "[EmployeeID]=" & Me.cboLoginName.Value) Then
Me.Visible = False
DoCmd.OpenForm "frmEntry"
Else
MsgBox "Invalid employee name / password combination. Please try again.", vbOKOnly, "Invalid Entry!"
Me.tbxPassword.SetFocus
End If
End Sub
【问题讨论】:
-
您是否在失败的行上放置了一个断点并检查了 'Me.cboLoginName.Value' 的内容...我认为这是数字,否则您需要在字符串周围加上引号。
-
在我将 JobTitle 添加到组合框的 qry 之前,一切正常。只有 EmployeeID、Employee Name:[FirstName] & " " & [LastName]。但我需要有 JobTitle 来处理其他事情。可能代码不知道取哪个字段。
-
放断点,查看Me.cboLoginName.Value的内容。这可能不是您所期望的...即向组合框添加一列可能会改变您的列对齐方式...听起来像“管理员”是一个职位????
-
me.cboLoginName.Value = 管理员。而“Admin”是一个用户名
-
那么,这是否会转化为:在 'EmployeeID' = 'Admin' 的表 'tblEmployees' 中找到'password' 字段? 'EmployeeID' 是数字字段吗?如果没有,我之前建议引用;但现在知道它是 alpha,你需要引号。但我认为问题在于使用了错误的列(您确实说过 Admin 是用户名而不是“EmpID”)
标签: vba