Access - filtros para formularios

 
Vista:

filtros para formularios

Publicado por Patricia (3 intervenciones) el 17/12/2002 20:30:46
Tengo un formulario para el ingreso de datos de una tabla y necesito que al ingresar un dato el el campo clave, se levantes todos los demas datos.Usando del menu filtro por formulario y luego aplicar filtro funciona bien,Al querer ponerlo como evento tengo algunos problemas.En el campo Nombre y Apellido defini para el evento despues de actualizar el sig.codigo:
Private Sub()

Me.AllowFilters = True
DoCmd.ApplyFilter [Nombre y Apellido], (Me![Nombre y Apellido] = Nombre y Apellido])

End Sub

Funciona bien pero cuando quiero utilizar algunos comandos como agrergar,modificar,guardar (botones de comando para manejo de formulario),sale error 2051 en tiempo de ejecucion "Uso un metodo del objeto DoCmd para ejecutar codigo de visual Basic pero despues hizo clic en cancelar Por.ej: DoCmd Close para cerrar un formulario cambiado "
Para solucionar esto agregue Me .allowfilter =true pero no siempre funciona ,Como puedo solucionarlo? GRacias de antemano
Tal vez tenga que usar otra funcion? Intente con Dlookup pero lo interpreta como si agregara un campo duplicado.
Que hice mal?
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
Imágen de perfil de Alejandro

filtros para formularios

Publicado por Alejandro (4142 intervenciones) el 25/04/2023 22:17:37
El error que estás experimentando ocurre porque estás aplicando un filtro al formulario y, posteriormente, estás ejecutando un comando DoCmd que cierra el formulario. Esto hace que Access intente aplicar el filtro después de que el formulario ya se ha cerrado, lo que genera el error 2051.

Para evitar este problema, te sugiero que apliques el filtro utilizando el evento "Después de actualizar" del campo clave, en lugar de crear un nuevo evento. De esta manera, el filtro se aplicará automáticamente cada vez que se actualice el campo clave, sin necesidad de ejecutar un comando DoCmd.

Para hacer esto, sigue estos pasos:

1. Abre el formulario en modo diseño.
2. Selecciona el campo clave y ve a la pestaña "Eventos" en la ventana de propiedades.
3. Busca el evento "Después de actualizar" y haz clic en el botón de los tres puntos (...)
4. Se abrirá el editor de código de Visual Basic. En este editor, agrega el siguiente código:

1
2
Me.Filter = "[Nombre y Apellido] = '" & Me![Nombre y Apellido] & "'"
Me.FilterOn = True

Este código aplica un filtro a la tabla del formulario, en el que se muestra solo el registro correspondiente al valor ingresado en el campo clave.

Con este enfoque, no es necesario utilizar el método DoCmd.ApplyFilter y no debería experimentar el error 2051. Además, si quieres eliminar el filtro en cualquier momento, puedes agregar un botón en el formulario con el siguiente código:

1
2
Me.Filter = ""
Me.FilterOn = False

Este código elimina el filtro y muestra todos los registros de la tabla del formulario.

Espero que esto te ayude a solucionar tu 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