Access - FORMULARIO CON CAMPO FILTRADO POR USUARIO CON CONTRASEÑA

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON CAMPO FILTRADO POR USUARIO CON CONTRASEÑA

Publicado por Maria (8 intervenciones) el 03/10/2019 19:39:57
Tengo una base con formulario para validar los usuarios con contraseñas.

El usuario , una vez validado, puede abrir formularios pero me interese que el nombre del usuario sirve de filtro para los formularios. De esta manera el usuario puede ver los registros que pertenecen a èl y no otros.

He estado mirando pero no encuentro nada.... ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Maria (8 intervenciones) el 04/10/2019 11:22:59
EN el formulario, "al cargar" he puesto evento:
Me.Filter="Usuario='"& FClave("txtUsuario") & "'"

Despues de introducir usuario y contraseña, al abrir el formulario en cuestión me sale mensaje de error:

ACCESS NO ENCUENTRA EL OBJETO 'ME'

Dónde tengo que definirlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Anonimo (3317 intervenciones) el 04/10/2019 13:26:48
Es raro pues 'Me' es el propio formulario y 'Filter' es una de sus propiedades.

En muchas ocasiones el mensaje de error (que no el error) no se define bien, probablemente no puede actualizar la expresión que define al usuario y solo presenta el inicio de la expresión que esta analizando y comienza justo por 'Me'

Una forma de verificar donde puede estar el fallo en este caso es: cuando se genere el error (en tiempo de ejecución) en la línea de inmediato y precedida de '?' se escriba la expresión que hay a partir del paréntesis y ver si cumple con los requisitos, seria algo como :


? "Usuario='"& FClave("txtUsuario") & "'"

Access ejecutara esa línea y (en este caso) debería responder con (si es "Juan" el usuario):
Usuario='Juan'

Si no responde eso o algo similar … es el origen del problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Maria (8 intervenciones) el 04/10/2019 21:52:00
Gracias por la respuesta.
He quitado el evento para ver si esto podia producir el error.
En su lugar he puesto el filtro en AbrirFormulario. El formulario se abre pero me pregunta ID.txtUsuario y pondiendo el usuario me abre el formulario filtrado aunque antes me da este error:

Al abrir formulario me lo filtra pero antes sigue diciendo error en 'ME:

Captura3

No tengo idea de donde està este "Me" que causa el error.
Y tampoco porque me pregunta :

Captura2. Luego si le pongo otro usuario diferente me lo filtra igual por èste... asi que NO VA BIEN|

que es el filtro que le he puesto en AbrirFormulario.

Gracias de nuevo y espero me ayudes en esto, es importante porque los usuarios no pueden ver la info de otros!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Anonimo (3317 intervenciones) el 05/10/2019 01:08:55
La única forma de poder encontrar el error es con el formulario delante, así se puede hacer un análisis forense.

La alternativa (suele ocurrir cuando se trastea y sin desearlo algo se modifica) consiste en comenzar de cero con el mismo formulario y paso a paso verificar que funciona.

Sin embargo, creo que no estas aplicando la solución mas adecuada, aclaro este punto:

Es diferente abrir un formulario filtrado, que abrir un formulario y filtrarlo
El formulario que se abre condicionado su origen de datos, 'solo contendrá' esos datos
El formulario que se abra 'normal' y tras ello se filtra su contenido, tendrá todos los datos y solo mostrara una parte de ellos (se puede acudir a su contenido si se tiene un cierto nivel).

A priori las ventajas de uno y oro método serian (para casos como este):

Se filtra el origen de datos:
Se tienen menos datos para manejar, lo que lo convierte en ligero, no se puede obtener mas que lo que se ve, el resto de sus similares (otros usuarios), para el no existe

Se abre y tras ello se filtra:
En principio tiene 'todos los datos' pero el filtro limita los accesibles, es útil cuando interesa ver su contenido con una condición variable (no tiene que 'cargar' un contenido, simplemente lo muestra a conveniencia) , ejemplo: el capataz puede ver lo que hace cada trabajador de forma individual con cambios de trabajador inapreciables e incluso puede verlos de dos en dos … están todos que tome lo que quiera.

Revisando lo que has publicado me surge una duda sobre esto:
FClave("txtUsuario")

¿es una función?

Si lo es, convendría que se le declarase el tipo de forma correcta, por defecto las funciones devuelven un valor tipo Variant y el filtro requiere un valor tipo String (si fueran exactamente iguales, uno de ellos carecería de sentido)

En principio (y si Access no tiene problemas de instalación) yo descartaría el 'Me'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Maria (8 intervenciones) el 06/10/2019 00:55:47
Gracias de nuevo,
Sí, es una función definida en una macro en el botón de abrir formulario.

Ahora he entendido que es esta función a crear el problema 'Me', porque la función busca en su form el campo txt.Usuario. Tendría que guardar la clave y password en este formulario de panel de control.
Me explico, la base se abre con la autentificación de usuarios, que una vez validada la clave va abrir el panel donde hay un botón que abre el formulario. Es en este último botón donde he puesto la función de filtro.
Cómo hago para que me guarde los nombres de usuarios? No se como escribir el código..
Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Anonimo (3317 intervenciones) el 06/10/2019 10:40:02
Metodologías hay muchas, la seguridad tiene muchas interpretaciones y se tiene que valorar donde comienza la seguridad y donde la seguridad que se desea aplicar es superflua o antieconómica (sea en dinero o en recursos).

Según la versión de Access se pueden tomar diferentes caminos, el básico y fiable consiste en:
.- Crear una variable PUBLICA (esto es declarada en un modulo independiente) para almacenar el usuario
(y si acaso otra para sus nivel de permisos)

.- En el formulario en que se valida el acceso, si se le autoriza, se 'carga' en esa variable el nombre y si fuera el caso su nivel de permisos

Esa variable al estar declarada como publica, será accesible 'desde cualquier lugar' en el entorno de VBA, fuera de el se tendría que utilizar una función para obtenerla.
En versiones modernas de Access, se han añadido las 'variables temporales' que tienen la ventaja de ser accesibles en VBA y fuera de el, de disponer de ellas, se crean (la primera vez que se inician) y tras ello se les puede asignar valor de ser necesario.

Pero el nombre esta bien para saber quien es el usuario activo o para poner en la cabecera/pie de un informe y para filtrar por nombre un formulario (creo que lo ideal seria utilizar el ID del usuario y no su 'descripción', pero depende del programador y cada programador tiene su propio estilo)

Formulario de Acceso
Se introduce nombre y contraseña
es correcto ==> se guarda el nombre (y el resto de sus características de ser el caso) en las variables publicas
No es correcto …. a segundo … tercer.... intento mientras así lo permita esa programación

Se inicia el formulario que requiere filtrado de tares por usuario … dos opciones:

La del operario
Apertura del formulario, aplicando el filtro por usuario en la apertura como condición (solo tendrá acceso a sus datos …)
-- atención a esto porque solo se esta trabajando con un subconjunto de datos y pueden fallar referencias a la totalidad (por ejemplo: al crear un registro nuevo)

La del superior
Se abre el formulario sin filtrar y en tiempo de ejecución puede cambiar de operario y también trabajar con el conjunto de todos (depende de que la programación lo permita y de sus particulares habilidades).

… los usuarios son muy creativos, escucharles es una excelente idea para abrir puertas que les faciliten tareas o para levantar muros que protejan al conjunto.

En función de como se 'memorice' el usuario activo, se aplica el filtro y el filtro se aplicara en función de si se abre para un único usuario limitado o para un otro usuario sin limites o limites mas amplios (requiere análisis para aplicar la estrategia optima)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Maria (8 intervenciones) el 06/10/2019 22:09:39
Gracias de nuevo!

El formulario se tiene que abrir solo para el "operario" aplicando el filtro por usuario en la apertura como condición (solo tendrá acceso a sus datos)

Come me comentas, tendría que guardar la contraseña, va bien también con el ID y no con el nombre. Para hacerlo:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Formulario de Acceso
Se introduce nombre y contraseña
es correcto ==> se guarda el nombre (y el resto de sus características de ser el caso) en las variables publicas
No es correcto …. a segundo … tercer.... intento mientras así lo permita esa programación

Se inicia el formulario que requiere filtrado de tares por usuario
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Me podrias decir cuál es el código, he visto muchos mezclados con otras cosas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Anonimo (3317 intervenciones) el 06/10/2019 23:17:22
Admito que alguien tenga dudas al plantearse la solución a un problema y solicite ayuda, pero algo tiene que poner de su parte … por lo menos intentarlo
Si no se camina por esa senda no se tiene intenciones de hacer nada, quiere que los demás estudien trabajen y que se lo den finalizado.

Para mi no funcionan así las cosas, he planteado soluciones que se podrían aplicar a una base que hubieras creado, si no lo has creado tu, acude a quien comenzó la tarea y deja que la acabe.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Maria (8 intervenciones) el 07/10/2019 09:10:36
Ante todo agradecerte el tiempo que te me has dedicado.
Créeme, he intentado hacerlo sin pedir ayuda, pero esto de las claves no lo había hecho nunca y dada la complejidad de esta base no he podido dedicar más tiempo a la parte de las claves.
Por supuesto que la base la he creado yo, ésta y otras...Y he resuelto cosas por mí misma que, por cierto, he visto en este bloc a personas que han solicitado ayuda, y yo he resuelto por mí misma. Sólo he solicitado ayuda para esta parte de las claves.

De todas formas si creo un panel desde el asistente, crea ya las variables públicas y lo hace directamente pero no entiendo los pasos, así que he decidido hacerlo yo de esta manera.
Creo que resolveré creando un formulario por usuario.
Gracias de nuevo por tu tiempo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Anonimo (3317 intervenciones) el 07/10/2019 09:40:26
Mi aportación final en este hilo ….

Si tengo una variable publica (del tipo adecuado) y le asigno un valor que defina a un usuario puedo:

Presentar un cuadro de texto (incluso una etiqueta) que lo salude con algo asi:

Me.[cuadro de texto bienvenida] = "Buenos días " & Variable_usuario_activo

y si en 'Variable_usuario_activo' he guardado "Perico" (lo he identificado en el formulario de entrada en el que se valida como usuario autorizado) en donde este ubicado el objeto '[cuadro de texto bienvenida]' aparecería:

Buenos días Perico

Y en la apertura de ese formulario en cuyo origen de datos hay un campo que guarda 'perico, juan, lola .... (nombres de usuarios)' le indico que aplique a ese campo el filtro por 'perico' .... solo se veran registros de perico

Solo es cuestión de escribir:
1
DoCmd.OpenForm "nombre del formulario",? ,?, ? ……..

Y pulsando la tecla F1 aparecerá información con el texto seleccionado, una lectura adecuada al lector (rápida, lenta, por etapas, ...) desvelara el misterio de las comas y su utilidad (y alternativas a no contar comas).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

FORMULARIO CON COAMPO FILTRADO POR USUARIO CON CONTRASEòA

Publicado por Alejandro (5 intervenciones) el 25/02/2020 05:40:45
Eres un gallo, viejo.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar