Private Sub btn_Login_Click()
On Error Resume Next
Dim rs As Object
Dim strSQL As String
Dim loginField As String
Dim passField As String
Dim roleField As String
Dim mgrField As String
Dim tableName As String
Dim f As Object
Dim foundTable As String
Dim foundLogin As String
Dim foundPass As String
Dim foundRole As String
Dim foundMgr As String
' Ищем таблицу с полем "Логин" или "Login"
For Each f In CurrentDb.TableDefs
On Error Resume Next
If f.Fields("Логин").Name = "Логин" Then
foundTable = f.Name
foundLogin = "Логин"
foundPass = "Пароль"
foundRole = "Роль"
foundMgr = "КодМенеджера"
Exit For
End If
If f.Fields("Login").Name = "Login" Then
foundTable = f.Name
foundLogin = "Login"
foundPass = "Password"
foundRole = "Role"
foundMgr = "ManagerID"
Exit For
End If
Next
If foundTable = "" Then
MsgBox "Не могу найти таблицу пользователей!", vbCritical
Exit Sub
End If
strSQL = "SELECT * FROM [" & foundTable & "] WHERE [" & foundLogin & "] = '" & Me.txt_Login & "' AND [" & foundPass & "] = '" & Me.txt_Password & "'"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Err.Number <> 0 Then
MsgBox "Ошибка запроса: " & Err.Description, vbCritical
Exit Sub
End If
If rs.EOF Then
MsgBox "Неверный логин или пароль!", vbCritical
Me.txt_Password = Null
Me.txt_Password.SetFocus
Else
TempVars!CurrentRole = rs(foundRole)
TempVars!CurrentMgrID = Nz(rs(foundMgr), 0)
rs.Close
Set rs = Nothing
DoCmd.Close acForm, "frm_Login"
DoCmd.OpenForm "frm_MainMenu"
End If
rs.Close
Set rs = Nothing
End Sub