Formulario con usuarios Access y Contraseña con permisos de escritura y solo lectura según permisos

¿Cómo están? Mi consulta sería la siguiente y espero ser claro :

Tengo un formulario de "Login" donde con mis pocos conocimientos, pude lograr que ingresando el usuario y contraseña, el usuario "Admin" al ingresar pueda modificar a gusto todo el Acces, el Usuario "Recurrentes", pueda ingresar a modificar registros, pero estaría necesitando que el usuario "Mesa", pueda ingresar solo a un formulario llamado "Mesa de Ayuda", y en todo caso que el resto de tablas y/o formularios (hay muchos mas) pueda ingresar o visualizarlos como solo lectura", que me estaria faltando en el código para que esto sea posible? Agradecería muchísimo la ayuda!

Les dejo un ejemplo de la tabla y formulario de ingreso con el código del Evento en el Botón "Aceptar".

Tabla Usuarios

Tabla Usuarios Nivel

Formulario de Ingreso:

Código:

Private Sub Comando1_Click()
Dim UserLevel As Integer

If IsNull(Me.txtUsuario) Then
MsgBox "Por favor, escriba su Usuario", vbInformation, "Usuario requerido"
Me.txtUsuario.SetFocus
ElseIf IsNull(Me.txtPass) Then
MsgBox "Por favor, ingrese su Contraseña", vbInformation, "Contraseña requerida"
Me.txtPass.SetFocus
Else
If (IsNull(DLookup("[Usuario]", "Usuarios", "[Usuario] ='" & Me.txtUsuario.Value & _
"' And Pass = '" & Me.txtPass.Value & "'"))) Then
MsgBox "Usuario y/o Contraseña incorrectos"
Else
UserLevel = DLookup("Nivel_Seguridad", "Usuarios", "Usuario = '" & Me.txtUsuario.Value & "'")
If UserLevel = 1 Then
DoCmd.Close
MsgBox "Ojo con los Cambios!", , "Administrador"
Else
DoCmd.Close
DoCmd.OpenForm "Inicio"
End If
End If
End If
End Sub

Espero haber sido claro, en resumen es El usuario "Mesa, Necesitaria que sea de solo lectura" Excepto en un formulario que se llama "Mesa de Ayuda".

2 Respuestas

Respuesta
2

Felipe, Soy Miguel Ángel y hace mucho tiempo que no entraba a TodoExperto.com. Y me encuentro con esta pregunta que creo poder ayudarte gracias a que realice un video para explicar como lograr lo que necesitas. Formulariobde acceso con niveles. Puedes revisar el siguiente enlace donde hago y explico paso a paso el procedimiento. www.youtube.com/FTz-JkTh92o

Espero poder ayudarte con este video y si tienes consultas me puedes contactar Saludos desde Chile.

Buenas! gracias por la ayuda! no pude acceder al link pero ahora lo buscare con ese nombre en youtube =)

Felipe, Mira aquí esta paso a paso como crear un formulario de acceso. He creado también otros 2 videos de como asignarles niveles de acceso.

Video1- Como crear un formulario de acceso:

https://www.youtube.com/watch?v=FmdLq6w7FDY 

Video2 - Formulario de acceso con nivel de acceso https://www.youtube.com/watch?v=FTz-JkTh92o 

Cabe señanar que la propiedad para que en un formulario se puedan editar los registros es la de Form_xxxxxx.AllowEdits = False esto hace que no se pueda editar los datos en un formulario solo verlos. si lo colocas en True podras editarlos. por lo que podrás manejar esto simplemente con los IF, Si no te queda claro, ya sabe donde encontrarme. [email protected] Skype: solucioninformatica.cl

Respuesta
1

Felipe, lo que yo hago es definir en un módulo una variable Publica que siempre me de el valor del tipo de permiso que tiene el usuario que ingresó, con esto puedo al abrir un formulario determinar que hacer. Ejemplo en el Open de los formularios, excepto "Mesa de Ayuda" si la variable tiene "Mesa" entonces activo las restricciones deseadas, ejemplo Me.AllowAdditions = False.

Estimado, esa ejecución o sentencia ... seria al abrir el formulario?

o como seria publica tendría que ponerlo como evento de cada formulario? perdon la consulta tonta pero como dije...soy muy new ja....

pensé algo así pero no me resulto...

If UserLevel = 3 Then
Me.AllowAdditions = False

DoCmd.Close

La variable en este caso UserLevel la defines en un módulo. Crear, Modulo

Option Compare Database

Public UserLevel as byte

Y lo guardas, como principal, o inicio, el nombre que desees.

Access mantiene vigente siempre lo que definas en un módulo, allí es donde ponemos variables y funciones que son comunes a varios formularios.

En el open del formulario colocarías:

Private Sub Form_Open(Cancel As Integer)

If UserLevel = 3 Then
    Me.AllowAdditions = False

endif

End Sub

El Docmd. Close te cerraría todo, no debes usarlo aquí.

Recuerda como UserLevel, lo tienes definido en un modulo de forma publica, estará disponible para todos los procesos, no tienes que volverlo a definir, sólo usarlo. Es decir debes quitarlo de Private Sub Comando1_Click()
Dim UserLevel As Integer (borrar).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas