2015-03-20 2 views
0

MS Access 2013 У меня есть таблица tblUser со следующими данными (UserName/Password/StartForm) У меня есть система входа в систему, где пользователь помещает в поле формы, называемое txtLogin его UserName.в MS ACCESS, это можно сделать: DoCmd.OpenForm "Dlookup ...."?

После совпадения имени пользователя и пароля мне нужно открыть конкретную форму для каждого пользователя (в зависимости от его функции в компании). У меня есть этот код на месте, но он не может решить проблему.

DoCmd.OpenForm DLookup("StartForm", "tblUser","[UserName]='" & txtLogin & "';") 

Я только начинаю программировать, и я хочу узнать, не копировать/вставить код, так что я очень ценю, если вы можете дать мне простое объяснение.

Спасибо

+0

привет @HansUp. Да .. Я понял ответ. спасибо –

ответ

2

Первый параметр DoCmd.OpenForm это имя формы. Чтобы открыть форму по определенному параметру, вам необходимо использовать 4-й параметр , который является WhereCondition.

Dlookup функция здесь не нужно. Он используется для возврата одного столбца из одной записи, где исходный столбец является первым параметром, а исходная таблица является вторым параметром. Он знает, какую запись захватывать по критериям поиска, третий параметр.

Как у вас есть эта настройка, вы просите DoCmd.OpenForm, чтобы открыть форму по имени [the result of your DLookup call] без фильтра.

Что вы хотите больше, как это

DoCmd.OpenForm NameOfYourUserForm, acNormal, , "[UserName]='" & txtLogin & "'" 
+0

спасибо .. безупречный –

+0

Hello. ваш ответ был поучительным, и я ценю. Однако я использовал другой метод. спасибо –

0

Я был в состоянии решить эту проблему следующим образом. Я создал переменную для формы, которую я хочу назвать (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 
Смежные вопросы