Error 2471 en validación |
Responder |
Autor | ||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Tema: Error 2471 en validación Enviado: 05/Noviembre/2019 a las 05:53 |
|||
Hola a todos,
Tengo el siguiente problema. A una variable publica le paso el IdLevel del usuario logueado de la tabla AdminRoles. Así:
Luego la paso al formMain mediante argumento
En la Tabla AdminRoles tengo los nombres de los botones del formMain con campos Si/No, pretendo validar si el Botón es Si entonces permitir el acceso caso contrario negar el acceso, esto lo he visto de un codigo en la WEB.
Este es el codigo que me tira error, por mas que le doy vueltas, no lo hecho andar, los tipos de datos son integer. Run-time error 2471 La expresion que usted ha ingresado como parametro de un query produce este error" '[intLevel]'
imprimo las variables para ver si esta pasadon el IdLevel y si que si lo hace, pero la validación me tira error. No se si es la forma correcta de validar si el usuario tiene o no permisos para ver el formulario ya que lo estoy haciendo a nivel de botón de comando y no de formulario. Erick gamer |
||||
Aprendiz de todos, maestro de nadie.
|
||||
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 05/Noviembre/2019 a las 10:57 | |||
Hola!
No lo sé pero si [intLevel] es de tipo texto te falta unas comas simples: If DLookup("[Data]", "AdminRoles", "[intLevel]= '" & Me.OpenArgs & "'") = True Then ................ |
||||
Un Saludo.
|
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 05/Noviembre/2019 a las 15:53 | |||
Hola mounir,
Es correcto faltaria las comillas simples si fuera tipo texto, pero intLevel es de tipo integer. Ya lo habia probado así agregar las comillas simples, pero sigue arrojando el mismo error. Que mas podria ser el problema? Erick Gamer |
||||
Aprendiz de todos, maestro de nadie.
|
||||
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 05/Noviembre/2019 a las 16:01 | |||
Hola!
Si es de tipo integer pues sobraría If DLookup("[Data]", "AdminRoles", "[intLevel]= " & Me.OpenArgs & "") = True Then Editado por mounir - 05/Noviembre/2019 a las 16:01 |
||||
Un Saludo.
|
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 05/Noviembre/2019 a las 17:00 | |||
Tal cual Mournir, error 2471: '[intLevel]' Erick Gamer
|
||||
Aprendiz de todos, maestro de nadie.
|
||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 05/Noviembre/2019 a las 20:18 | |||
¿intLevel es un campo de la tabla AdminRoles?
Yo creo que no...
|
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 05/Noviembre/2019 a las 20:33 | |||
Hola Xavi,
intLevel es la variable publica, tomando el valor del campo AdminRoles en el Login con este Dlookup
En la tabla AdminUser el campo Level esta toma el campo IdLevel mediante un combobox Erick Gamer |
||||
Aprendiz de todos, maestro de nadie.
|
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 05/Noviembre/2019 a las 22:43 | |||
Alguna otra sugerencia estimados?
U otra forma de validar los permisos del usuario basado en el usuario logueado y los botones a los que puede acceder? Erick Gamer
|
||||
Aprendiz de todos, maestro de nadie.
|
||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 05/Noviembre/2019 a las 23:28 | |||
Punto 1: Entonces lo haces mal. El tercer argumento del DLookup no funciona como tu lo haces. Debe ser una equivalencia entre un campo de la tabla y un valor. Como hemos visto, intLevel no es un campo de la tabla. De ahí el error que te devuelve.
Punto 2: si, como dices en el primer mensaje, intLevel es una variable pública (se supone declarada em un módulo independiente) no tiene ningún sentido pasarla mediante OpenArgs puesto que estará disponible en cualquier parte de la aplicación. Punto 3: otra forma que yo he utilizado. Tabla Roles 1-Dios 2-Administrador 3-Superusuario 4-Usuario 5-Invitado Tabla Objetos NombreFormulario IdRolMinimo (se asume que una variable pública intRol almacena el Rol del usuario actual) Función en módulo independiente
En cada formulario, en el evento Open
Un saludo
Editado por xavi - 05/Noviembre/2019 a las 23:29 |
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 05/Noviembre/2019 a las 23:40 | |||
Pasar el valor si que lo hacia en un modulo independiente, ahora dejame probar lo que tu haces en el punto tres xavi. Erick Gamer |
||||
Aprendiz de todos, maestro de nadie.
|
||||
Erick Gamer
Asiduo Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 06/Noviembre/2019 a las 06:53 | |||
Tengo estas tres tablas y su respectiva relación:
He hecho las siguientes pruebas, en la tabla AdminObjects, agregue el nombre de dos formularios, repetido dos veces con los siguientes IdRol: formMain,IdRol=1 formRegistration,IdRol=1 formMain,IdRol=Null formRegistration,IdRol=Null Voy al login y con tu función xavi, con el Rol de Admin accedo a los formularios formMain y formRegistration. Con el rol de Superuser=2 no accedo, me marca error: 2501 OpenForm action was canceled. Esto lo puedo tratar con un control de errores. El problema viene en que después de hacer esa prueba agregue el IdRol a los dos formularios: formMain,IdRol=2 formRegistration,IdRol=2 Y aun así, no me deja accesar a los formularios, entonces ando perdido, estoy haciendo las cosas mal o ese no es el correcto funcionamiento. Tu lo tienes con dos tablas yo quisiera hacerlo con las tres si es que es posible. Aqui los codigos:
Erick Gamer
|
||||
Aprendiz de todos, maestro de nadie.
|
||||
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |