Macro no encuentra el registro en formulario

Tengo la siguiente macro que se observa en la imagen

La cual al parecer no funciona correctamente y la verdad que no se el motivo.

Destaco que esta macro esta insertada en un botón y toma el valor a buscar desde una etiqueta del formulario usuario . Por lo tanto debe buscar en el formulario "misprivilegios" en el campo "Login" la coincidencia y mostrarme en el formulario con la información de ese registro.

Así esta la condición Where:

="Formularios![Usuario]![lbl_UsuarioActivo] =" & "'" & "Formularios![MisPrivilegios]![Login]" & "'"

Si logra abrir el formulario misprivilegios, pero mostrando ningún registro.

Alguien me puede ayudar con esta macro,¿algún código vba que lo pueda hacer?

1 respuesta

Respuesta
2

Pon así el WHERE:

="Formularios![Usuario]![lbl_UsuarioActivo] =" & "'" & [Formularios]![MisPrivilegios]![Login] & "'"

es decir, sin encerrar entre comillas el valor del cuadro de texto Login, porque tal como lo tenías, buscada literalmente la cadena: Formularios![MisPrivilegios]![Login], y claro, en tu tabla no tienes un registro con ese dato, por eso no te mostraba nada

Hola Gracias por tu respuesta pero ahora me arroja el siguiente error

te menciono que esta macro la tengo insertada en el evento hacer clic de un boton en un sbformulario, que llama al formulario misprivilegios .

lo puse tal cual me lo modificaste, verifique los nombres y todo.

También intente poner directamente una macro en el formulario misprivilegios en el evento abrir una macro de filtro con ese código y me lo muestra en blanco como antes.

¿Y no será que tienes el WHERE mal construido? Normalmente, la parte izquierda de la igualdad es un campo de una tabla, no una etiqueta de un formulario.

Pero en todo caso, si fuera con los elementos que mencionas en tu pregunta, tendrían que ir colocados al revés, porque tú lo que quieres (según lo entiendo) es que el campo Login del formulario MisPrivilegios, vaya filtrado por el valor del la etiqueta lbl_UsuarioActivo del formulario Usuario:

=" [Formularios]![MisPrivilegios]![Login]=" & "'" & Formularios![Usuario]![lbl_UsuarioActivo] & "'"

Hora sucede lo contrario ja ja

¿Cómo podría hacer esto con vba?

Claro que puedes hacerlo en VBA:

DoCmd.OpenForm "MisPrivilegios",,,CONDICION WHERE

En CONDICION WHERE tendrás que poner la condición, teniendo en cuenta lo dicho anteriormente: en la parte izquierda el nombre del campo de la tabla a filtrar, y en la derecha, la referencia al control que tiene el valor por el que filtrar, por ejemplo:

DoCmd.OpenForm "MisPrivilegios",,,"Login='" & Me.UsuarioActivo & "'"

no me equivoque tenia el formulario usuario cerrado , se ejecuta la macros pero me muestra el formulario totalmente en blanco.

Pues o me dices exactamente qué intentas hacer (qué campo quieres filtrar y con qué valor) y dónde está cada cosa (tablas, formularios...), o me envías una copia de tu BD con los formularios y tablas mínimos para que funcionen para que pueda verlo...

Por cierto, el formulario en el que tienes el valor por el que filtrar, tienes que estar abierto cuando abres el formulario MisPrivilegios.

¿Probaste a hacerlo con el código?

Si pero me arroja el siguiente mensaje

Una cosa: yo no tengo delante tu BD y solo sé de ella lo que cuentas en tu pregunta. Si no das toda la información necesaria, y tengo que andar haciendo suposiciones es muy difícil llegar a darte una buena solución a tu problema.

Dicho esto, si lbl_UsuarioActivo es una etiqueta y no un cuadro de texto, para obtener su "valor", has de usar su propiedad Caption:

DoCmd.OpenForm "MisPrivilegios",,,"Login='" & Me.lblUsuarioActivo.Caption & "'"

¡Gracias! 

Ahora si funciona perfecto con una pequeña modificación

DoCmd.OpenForm "MisPrivilegios", , , "Login='" & Forms!Usuario!lbl_UsuarioActivo.Caption & "'"

muchas gracias por tu valioso tiempo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas