Solución Cuentas de Usuario Access?

Soy nuevo aquí en el sitio y espero que alguien me pueda ayudar!
Tengo la Siguiente linea que me funciona de maravilla para la administración de cuentas de usuario (Usuario y Administrador)... Pero deseo agregar un tercer sujeto (Usuario Facturación), cabe destacar que cada uno tiene privilegios especiales (Osea formularios completamente distintos entre si) y bueno surge la necesidad de un tercero...
Aquí les va la linea que hasta el momento me funciona muy bien con Usuario y Administrador ...
Esta es la linea:
Option Compare Database
Option Explicit
Dim NumIntentos As Integer
Private Sub CmdEntrar_Click()
Dim auxContraseña As String
'Comprobamos que hay datos en las cajas de texto
If Nz(Me.TxtLogin.Value, "") = "" Then
MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCIÓN"
Me.TxtLogin.SetFocus
ElseIf Nz(Me.TxtPassword.Value, "") = "" Then
MsgBox "Introduzca la contraseña del usuario seleccionado", vbInformation, "ATENCIÓN"
Me.TxtPassword.SetFocus
Else
If Nz(DLookup("Password", "Usuarios", "Id_usuario=" & Me![TxtLogin]), "") <> "" Then
auxContraseña = DLookup("Password", "Usuarios", "Id_usuario=" & Me![TxtLogin])
End If
If auxContraseña <> Me.TxtPassword.Value Then
If NumIntentos > 1 Then
NumIntentos = NumIntentos - 1
MsgBox "La contraseña introducida es incorrecta" & vbCrLf & _
"Le quedan " & NumIntentos & " intentos" & vbCrLf & vbCrLf & _
"Por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA"
Me.TxtPassword.Value = ""
Me.TxtPassword.SetFocus
Else
MsgBox "Ha superado el numero de intentos", vbCritical, "ADIÓS..."
DoCmd.RunCommand acCmdCloseDatabase 'y cerramos el de acceso
End If
Else
If DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin]) = 1 Then
MsgBox "Ha entrado el administrador, mostramos todas las tablas", vbInformation, "BIENVENIDO ADMINISTRADOR"
Call Admin
Else
MsgBox "Ha entrado un usuario, ocultamos todas las tablas", vbInformation, "BIENVENIDO USUARIO"
Call Usar
End If
'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
End If
End Sub
Function Admin() On Error GoTo Admin_Err DoCmd.OpenForm "Entorno de Administrador", acNormal, "", "", , acNormal Admin_Exit:
Exit Function Admin_Err:
MsgBox Error$
Resume Admin_Exit
End Function
Function Usar() On Error GoTo Usar_Err DoCmd.OpenForm "Entorno de Usuario", acNormal, "", "", , acNormal Usar_Exit:
Exit Function Usar_Err:
MsgBox Error$
Resume Usuar_Exit End Function
Bueno para quienes deseen utilizar estas lienas les serán de mucha utilidad ya que funcionan perfectamente... Pero deseo que alguien me pueda Agregar un tercer Usuario (Usuar2)

2 respuestas

Respuesta
1

Para empezar, borra esta lines y las siguientes hasta el final:

If DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin]) = 1 Then

luego escribe esto:

Dim Acceso as integer

Acceso=Select case DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin])

Select Case Acceso

Case 1 'Es el id_acceso del Administrador

MsgBox "Ha entrado el administrador, mostramos todas las tablas", vbInformation, "BIENVENIDO ADMINISTRADOR"

DoCmd.OpenForm "Entorno de Administrador", acNormal, "", "", , acNormal

Case 2 'Es el id_acceso del Usuario

MsgBox "Ha entrado un usuario, ocultamos todas las tablas", vbInformation, "BIENVENIDO USUARIO"

DoCmd.OpenForm "Entorno de Usuario", acNormal, "", "", , acNormal

Case 3 'Es el id_acceso del Usuario Facturacion

MsgBox "Pon aquí el mensaje que quieras", vbInformation, "BIENVENIDO USUARIO FACTURACION"
DoCmd. OpenForm "Aqui el nombre del formulario que corresponda", acNormal, "", "",, acNormal

End Select

'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If
End If
End Sub

En la tabla Usuarios, 1 será el Administrador, 2 el Usuario que ya tienes y 3 el nuevo Usuario Facturación.

Con este sistema puedes añadir todos los usuarios necesarios, sólo tienes que ir añadiendo dentro del bloque select case, tantos case como necesites.

Las funciones Admin y Usar las puedes borrar, pues ya no se usan.

Hola amigo bueno primero que nada no esperaba un respuesta tan rápida y te lo agradezco mucho, pero me arroja un error en la sintaxis...Quizás yo cometí un error ( lo mas lógico)

Mira según tu respuesta me queda así la linea:

Option Compare Database Option Explicit Dim NumIntentos As Integer
Private Sub CmdEntrar_Click() Dim auxContraseña As String 'Comprobamos que hay datos en las cajas de texto If Nz(Me.TxtLogin.Value, "") = "" Then MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCIÓN" Me.TxtLogin.SetFocus ElseIf Nz(Me.TxtPassword.Value, "") = "" Then MsgBox "Introduzca la contraseña del usuario seleccionado", vbInformation, "ATENCIÓN" Me.TxtPassword.SetFocus Else If Nz(DLookup("Password", "Usuarios", "Id_usuario=" & Me![TxtLogin]), "") <> "" Then auxContraseña = DLookup("Password", "Usuarios", "Id_usuario=" & Me![TxtLogin]) End If If auxContraseña <> Me.TxtPassword.Value Then If NumIntentos > 1 Then NumIntentos = NumIntentos - 1 MsgBox "La contraseña introducida es incorrecta" & vbCrLf & _ "Le quedan " & NumIntentos & " intentos" & vbCrLf & vbCrLf & _ "Por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA" Me.TxtPassword.Value = "" Me.TxtPassword.SetFocus Else MsgBox "Ha superado el numero de intentos", vbCritical, "ADIÓS..." DoCmd.RunCommand acCmdCloseDatabase 'y cerramos el de acceso End If Else Dim Acceso As Integer Acceso=Select case DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin])
Select Case Acceso
Case 1 'Es el id_acceso del Administrador
MsgBox "Ha entrado el administrador, mostramos todas las tablas", vbInformation, "BIENVENIDO ADMINISTRADOR"
DoCmd.OpenForm "Entorno de Administrador", acNormal, "", "", , acNormal
Case 2 'Es el id_acceso del Usuario
MsgBox "Ha entrado un usuario, ocultamos todas las tablas", vbInformation, "BIENVENIDO USUARIO"
DoCmd.OpenForm "Entorno de Usuario", acNormal, "", "", , acNormal
Case 3 'Es el id_acceso del Usuario Facturación
MsgBox "Ha entrado el Usuario Facturación, mostramos todas las tablas", vbInformation, "BIENVENIDO USUARIO FACTURACIÓN" DoCmd.OpenForm "Entorno de Facturación", acNormal, "", "", , acNormal
End Select
'DoCmd.OpenForm stDocName, , , stLinkCriteria 'Abrimos el formulario correspondiente DoCmd.Close acForm, Me.Name 'y cerramos el de acceso End If End If End Sub

Pero me arroja error de sintaxis justo en la linea:

Acceso=Select case DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin])

podrías explicarme mas detalladamente POR FAVOR...GRACIAS!

El error fue mio, el codigo correcto devesa linea es:
Acceso=DLookup("Id_acceso", "Usuarios", "Id_usuario=" & Me![TxtLogin])
Respuesta
1

Me podrían ayudar con un código para cancelar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas