Multiususario

Tengo una base de datos con varias tablas. Una de ellas es "empleados" y otra "contratos". Mi base de datos la estoy preparando para ponerla en red y que la puedan usar varias personas desde distintos PCs. Cuando entran tengo preparado un formulario basado en dos campos independientes que se comparan con la tabla de "empleados" para confirmar la contraseña.
Mi pregunta es la siguiente: ¿Cómo puedo hacer para que los empleados solo vean los contratos que hacen ellos y no los de los demás? Aparte, debe haber un administrador que los vea todos.

1 respuesta

Respuesta
1
¿Qué versión de Access utilizas?
Si es 2003 te vendría bien la seguridad por Grupos y Usuarios.´
Access 2007 / 2010 ya no incluye lo anterior. En este caso lo tienes resuelto con tu formulario de inicio de sesión que tienes.
No es tan complejo lo que necesitas, pero es una serie de pasos muy extensos que dependen mucho de cómo esté diseñada tu aplicación.
A groso modo:
1. Lo que necesitas es crear un nuevo campo en la tabla Contratos que se llame CreadoPor con un cuadro combinado relacionado con la tabla Empleados.
2. Crea un consulta basada en la tabla Contratos y en vista diseño dirígete al campo que creamos en el paso anterior CreadoPor y en la fila Criterios pon la expresión que controlará según el usuario que inicia sesión localmente.
Esto dependerá de cómo es el diseño de tu base de datos, la forma en que inician sesión los usuarios.
Podrías ocultar el form de inicio de sesión y que la consulta tenga como criterio el cuadro de texto donde está el id del empleado para que pueda filtrar los datos y sólo muestre los relacionados con en empleado.
Otra es mediante Dbúsq() en criterio para que Access busque en la tabla Empleados el que inicia sesión en el equipo local. Aún trabajando en LAN.
En fin, varias opciones.
3. Por último sería crear un formulario basado en la consulta que creamos en el paso 2 con sus respectivos criterios para que sólo le muestre al usuario sus respectivos contratos.
Por lo pronto es lo que se me ocurre. Hay mucha información al respecto en los foros de Access.
Piensa al respecto. Intenta y evalúa opciones.
Me cuentas el resultado.
La opción que me das de crear una relación con el formulario de inicio de sesión esta bien, de hacho es lo que tengo hecho. Lo que ocurre es que cuando entra el primer usuario funciona muy bien, pero cuando entra el segundo al cambiar el usuario el primero comienza a ver solo los registros del segundo a así sucesivamente.
Sí, entiendo lo que dices.
Por eso te comento en el mensaje anterior que el usuario debe abrir sesión local, es decir, que en una LAN la tabla usuarios podría ser local. Al hacer login en la tabla local, Access buscará en ésta, por equipo, y no en la tabla de usuarios de la red.
Porque como ya te has dado cuenta, cuando inicia sesión el segundo usuario te cambia todo.
En general es la idea, que todos los datos estén en red, pero las tablas de usuarios sean locales y la búsqueda de Access para asignar permisos también.
Es lo que se me ocurre específicamente para tu caso. Normalmente en Access es suficiente controlar el acceso de usuarios y qué objetos pueden ver.
Ahora bien, lo que buscamos siempre en seguridad Access nos lo va a proporcionar, pero de manera sencilla. Para palabras mayores tal vez convenga migrar tu base de datos a una DBMS robusta con su respectivo motor y front-end.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas