Загрузка данных


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