Hacer consulta que sirva para varios formularios en Access

Tengo varios formularios con distintos nombres ejemplo

frm_OEE_Maquina1

frm_OEE_Maquina2

Necesito una consulta donde el criterio aplique indiferentemente del formulario que utilice. Actualmente tengo una consulta que solo me sirve para el formulario actual y tendría que crear otra consulta para el otro formulario y cambiar el criterio. Adjunto foto de lo que tengo actualmente.

Probé utilizando lo siguiente, algo parecido al código VBA pero no funciono.

[Me]![txtMaquina]

La idea es que al ejecutar la consulta, tome la información del formulario que se encuentre activo.

1

1 respuesta

Respuesta
2

Simplemente quita los Criterios de la Consulta y aplica el Filtro que quieras en el Formulario llamante.

Una guía la tienes en ésta repuesta de Xavi:

¿Cómo filtro registros en un formulario de access desde un Txtbox?

En tu caso veo que tienes dos condiciones. Es cuestión de concatenarlas en el Filtro. Saludos >> Jacinto

Hola Jacinto, Buen día.

Resulta que la consulta no está relacionada con un formulario, es una consulta de eliminación que ejecuto con un botón desde el formulario (DoCmd), es decir que no puedo aplicar el filtro desde el formulario.

Aunque con ésta aclaración me suge la duda de como tienes el proceso, lo que si veo en tu consulta de eliminación si que depende del Formulario "-----Maquina1" y lo que he interpretado desde el inicio es que quieres una Consulta independiente que puedas ejecutar desde cualquier lugar de la Aplicación. Si eso es así me lo confirmas por favor y te sugiero un código que te evitará las Consultas de eliminación y que podrás llamar desde cualquier lugar. Para ir más seguro en la respuesta y que puedas solucionar el proble, dime que tipos de datos son>> RESOURCE Y ORDER, ya que según sea el tipo de texto o número cambia ligeramente el Código. Saludos >> Jacinto

Jacinto, buscando más información encontré este método para solucionarlo, donde no dependo de la consulta en access sino directamente desde un SQL, algo similar a la respuesta de Xavi.

DoCmd.RunSQL ("DELETE * FROM ENVASADO WHERE ENVASADO.ORDER=" & Me.txtOF & ";")

ENVASADO  es mi tabla donde quiero borrar los registros 

Me.txtOF es el txtBox que tengo en el formulario que puede variar según el usuario.

y ENVASADO.ORDER es el lugar donde quiero que compare.

Muchas gracias por tu ayuda, ya que me aclaró que camino tomar para solucionarlo.

Por supuesto que es correcto y enhorabuena por haberlo solucionado. Mi sugerencia va por otro lado parecido pero poniendo en un Módulo Estándar un Procedimiento general tal como éste:

Sub BorraRegistros(LaTabla As String, Criterios As Strimg)
CurrentDb.Execute = "DELETE * FROM " & LaTabla & " " & "WHERE" & " " & Criterios
End Sub

Para llamarlo desde cualquier sitio >>

Criterios = "ORDER=" & Me.TxtOF & " AND RESOURCE = " & Me.TxtResource
Call BorraRegistros("ENVASADO",Criterios)

He supuesto que tanto el Campo ORDER y RESOURCE son Números.

De ese modo El BorraRegistros, te vale para cualquier Tabla, poniéndole el Nombre y los Criterios en la llamada. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas