MS Access 2013 我有一个包含以下数据的tblUser表(UserName / Password / StartForm) 我有一个登录系统,用户在其中放入名为txtLogin的用户名表单字段。
在UserName和Password匹配后,我需要为每个用户打开一个特定的表单(取决于他在公司中的功能)。 我有这个代码,但无法弄清楚问题。
DoCmd.OpenForm DLookup("StartForm", "tblUser","[UserName]='" & txtLogin & "';")
我只是开始编程而且我想学习,而不是复制/粘贴代码,所以如果你能给我一个简单的解释,我非常感激。
谢谢
答案 0 :(得分:3)
DoCmd.OpenForm
的第一个参数是表单名称。要将表单打开到特定参数,您需要使用
第四个参数是WhereCondition
。
此处不需要Dlookup
功能。它用于从单个记录返回单个列,其中sourced列是第一个参数,源表是第二个参数。它知道搜索条件抓取的记录,即第三个参数。
您进行此设置的方式是要求DoCmd.OpenForm
以[the result of your DLookup call]
的名称打开一个没有应用过滤器的表单。
你想要的更像是
DoCmd.OpenForm NameOfYourUserForm, acNormal, , "[UserName]='" & txtLogin & "'"
答案 1 :(得分:1)
我能够解决问题如下。 我为我想调用的表单(nomeForm)创建了一个变量,并使用Dlookup为每个用户找到合适的表单。
谢谢
Private Sub cmdLogin_Click()
Dim rst As Recordset
Dim nomeUsuario As String
If IsNull(txtLogin) Or IsNull(txtSenha) Then
MsgBox "Preencha o login e senha"
Exit Sub
End If
nomeUsuario = txtLogin
Set rst = CurrentDb.OpenRecordset("SELECT * FROM tblUser WHERE UserName = '" & txtLogin & "' AND Password = '" & txtSenha & "';")
If rst.RecordCount = 1 Then
bcansafelyclose = True
DoCmd.Close
Dim nomeForm As String
nomeForm = DLookup("Start", "tblUser", "UserName = '" & nomeUsuario & "'")
DoCmd.OpenForm nomeForm
Else
MsgBox "Login ou senha incorretos"
bcansafelyclose = False
End If
rst.Close
End Sub