Creación de perfiles para usuarios en access

Tengo una base de datos en la que van a ingresar diferentes usuarios y he visto tutoriales donde se crean usuarios y entran a diferentes formularios según sea el caso, lo que yo quiero es que los diferentes usuarios entren al mismo formulario de inicio (este formulario tiene varios botones que dan acceso a otros para captura o consulta)

Pero que si el usuario que ingreso no tiene "permiso" para entrar le regrese un mensaje de que no esta autorizado a ingresar, Mi primer pregunta es ¿Si esto es posible de hacerse en access 2010? Y si es así ¿Cómo debería hacerlo? Cabe mencionar que no se nada de código por eso recurro a los tutoriales, espero haber sido clara en mi explicación y si pueden ayudarme o indicarme algún tutorial se los agradeceré.

1 respuesta

Respuesta
2

En este enlace de la web del experto Neckkito Nck tienes un buen ejemplo explicado de cómo trabajar con distintos tipos de usuario. En tu caso, no has de discriminar el primer formulario que se abre (será el mismo para todos), sino que has de comprobar, cada vez que pulsas un botón de tu formulario si el usuario actual tiene permiso para acceder o no a lo que abra ese botón.

A ver si te va saliendo, y si no, te voy ayudando con lo que surja.

Hola

De antemano te agradezco tu pronta respuesta y ayuda, reviso el enlace, lo hago y si tengo problemas te consulto, gracias :)

¿Cómo lo llevas? ¿Te va saliendo?

Hola,  si me va saliendo hoy voy a empezar a ver lo de los botones y yo creo que ahí si voy a necesitar tu ayuda :) cualquier cosa te aviso, muchas gracias,

Tal como lo predije ya tengo mi primer duda, tengo una tabla "Bitacora" donde se debería registrar la hora y la fecha en que entra un usuario, para que en base a esta busque con que tipo de usuario acceso y validar si tiene permiso o no de ingresar al siguiente formulario cuando de clic al botón, la primer duda es ¿como debo indicarle que registre la fecha y hora actual del sistema? inserte un cuadro de texto y en la hoja de propiedades, en los valores predeterminados puse =fecha(), la primera vez lo hizo pero no se actualiza cada que entran al formulario acceso, lo mismo pasa con la fecha

Luego en base a esto creo que debo validar en la tabla "Bitacora" con que tipo de usuario se ingreso y entonces abrir el formulario o enviar un mensaje pero no me queda claro como indicarlo en el código, lo tengo así

Private Sub Comando14_Click()
If Nz(DLookup("privilegio", "usuarios", "idempleado=" & "Idempleado", "Bitacora", "") = 1 Then
DoCmd.OpenForm "Alta de empresas"
Else
MsgBox "Su usuario no tiene permisos para ingresar"
End If
End Sub

Pero me sale un error 

Ojala pudieras ayudarme

Hola, ya logre hacer lo del botón solo me hace falta que actualice la fecha y hora haber si me puedes ayudar con eso.

Se me ocurren dos opciones, sin saber cómo tienes montado tu formulario de ingreso:

1º/ Si lo tienes basado en la tabla Bitacora, como me parece a mi, cámbiale la propiedad "Entrada de datos" de tu formulario, en la pestaña Datos, a Sí, para que cada vez que lo abras te vaya a un nuevo registro, y te funcione el valor predeterminado de fecha y hora.

2º/ Haz el formulario independiente de la tabla, y añade los datos en el momento de hacer el ingreso, mediante una SQL de datos anexados, algo así:

Private Sub Comando14_Click()
If Nz(DLookup("privilegio", "usuarios", "idempleado=" & Me.Idempleado, "") = 1 Then

Dim miSQL As String

DoCmd.SetWarnings False

miSQL="INSERT INTO Bitacoras (Usuario,Fc_Ingreso, Hr_Ingreso) VALUES (" & Me.Idempleado & ",#" & Date() & "#,#" & Time() & "#)"

CurrentDb.Execute miSQL

DoCmd.SetWarnings True

DoCmd.OpenForm "Alta de empresas"
Else
MsgBox "Su usuario no tiene permisos para ingresar"
End If

End Sub

En la web de neckkito tienes también un manual de SQL, por si necesitas consultar la sintaxis de la SQL.

En la que puse yo, has de cambiar los nombres de los campos por los que tú tengas.

Hola, respecto al tema de la fecha y hora, tengo la tabla "Bitacora" y de esta hice el formulario, por lo que utilice la opción 1 pero ahora como actualiza los datos ya no me respuesta los permisos que le di a cada usuario ¡Auxilio! Que hago

Ahora mismo no dispongo de tiempo para dedicar a este foro, pero aquí te dejo un otro ejemplo de Neckito, en el que te viene explicado cómo registrar el acceso de tus usuarios:

 http://siliconproject.com.ar/neckkito/index.php/component/content/article/92-ejemplos-explicados/ejemplos-de-seguridad/117-contrasena-y-control-acceso 

Hola ya vi el tutorial y es muy parecido a lo que hice, el problema lo tengo en el momento en el que se actualiza la fecha y hora de ingreso me crea otro registro y el código que tengo en los diferentes botones para dar permiso de entrar al siguiente formulario o no, depende de la tabla Bitácora (en esta se generan los registros con el usuario, fecha ingreso y hora ingreso) si dan clic a algún botón y este usuario no tiene permisos, el código va y busca el primer registro y dependiendo el usuario le abre el formulario o no, Mi pregunta es como puedo indicarle en mi código que lea el ultimo registro y dependiendo del usuario ejecute el siguiente código

If DLookup("[idempleado]", "[Bitacora]", "idempleado=" & "idempleado") = 4 Then
DoCmd.OpenForm "Alta de empresas"
Else
MsgBox "Su usuario no tiene permisos para ingresar"
End If

Se que no tienes mucho tiempo y de verdad te agradezco la ayuda que me has dado, solo que he buscado y no encuentro como hacerle encontré la instrucción

SELECT id FROM tabla ORDER BY id DESC

Pero no entiendo donde debo ponerla en mi código y si donde dice tabla debo poner el nombre de mi tabla o se debe que dar así, por favor espero puedas ayudarme para poder terminar con mi base, gracias.

Puedes probar a cambiar el DLookup por un DLast (o DMax, si tu id es autonumérico), con los mismos parámetros, para que te busque el último ID:

If DLast("[idempleado]", "[Bitacora]", "idempleado=" & "idempleado") = 4 Then...

Otra opción sería usar un recordset:

Dim rst as DAO.Recordset

Set rst=CurrentDb,OpenRecordset("SELECT id FROM tabla ORDER BY id DESC")

rst.Movelast  'Con esto te mueves al último 

If rst("ID")=4 then ....

¡Gracias! En verdad eres mi héroe tu y neckkito son grandes expertos ya quedo lista la base de datos no se que hubiera echo sin ustedes, solo te pido una cosa más, lo resolví con el DLast, pero la segunda opción que me pusiste ya la había visto y no logro entender como funciona serias tan amable de explicarme que hace o como es que funciona para futuras ocasiones y de nuevo muchísimas gracias

Sí, verás, un recordset es un conjunto de registros (una tabla, una consulta, una SQL...)

Primero tienes que declarar una variable de ese tipo: Dim rst As DAO:Recordset

Luego tienes que instanciarla (crearla): Set rst=CurrentDb.OpenRecordset()

Dentro de los paréntesis puedes poner el nombre de una tabla, una consulta o una SQL que defina una consulta.

El recordset tiene varias propiedades y métodos, como RecordCount, para saber el número de registros que contiene, MoveFirst, MoveLast, MoveNext... para moverte por los distintos registros, Edit para modificar un registro existente, AddNew para añadir uno nuevo...

En la web de Neckkito tienes un manual de VBA, en el que dedica 2 o 3 capítulos a este tema. Tambien puedes consultar la ayuda que trae el propio access.

Un saludo, y no te olvides de valorar la respuesta.

Ok, el manual que comentas ya lo vi, claro necesito más tiempo para leerlo todo y comprenderlo pero ten por seguro que lo haré nuevamente ¡Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas