Filtrar un subformulario mediante dos cuadros combinados en ACCESS

Mi situacion es la siguiente: Tengo una base de datos con 3 tablas: CLIENTE, PAGO y SERVICIO

He creado una consulta sencilla que se basa en los siguientes campos: Localidad ( de la tabla CLIENTE) y Cod_Cliente, Num_Boleta, MES_Pago, Monto, Debe ( de la tabla PAGO). Ambas tablas se relacionan mediante el campo Cod_Cliente. He creado un formulario y necesito que en este formulario vea dos cuadros combinados con los siguientes nombres (CuadroMes) y (CuadroLocalidad). En ambos cuadros combinados eleji la opcion los "valores que desee" y para CuadroMes pz son todos los meses del año... Mientras que para CuadroLocalidad: AA. Hh, chicama, chicamita. Lo que me gustaria y necesito saber es como filtrar un subformulario basado en la consulta mencionada al inicio mediante estos dos cuadros combinados... Ya lo he intentado con un solo cuadro combinado y todo perfecto... Tambien con dos... Pero access me obliga a llenar ambos campos para poder filtrar... Y lo que necesito justamente es poder filtrar SOLO CON EL CUADRO COMBINADO "CuadroMes", SOLO CON EL CUADRO COMBINADO "CuadroLocalidad" y con ambos al mismo tiempo. Dependiendo de lo que se requiera...

Respuesta
1

En ese caso deberías usar un botón, y en sus propiedades-eventos-al hacer clic poner

If not isnull([cuadromes]) and isnull([cuadrolocalidad]) then

me.nombredelsubformulario.form.recordsource="select * from tablaoconsulta where mes='" & me.cuadromes & "'"

elseif  isnull([cuadromes]) and not isnull([cuadrolocalidad]) then

me.nombredelsubformulario.form.recordsource="select * from tablaoconsulta where localidad='" & me.cuadrolocalidad & "'"

else

me.nombredelsubformulario.form.recordsource="select * from tablaoconsulta where mes='" & me.cuadromes & "' and localidad='" & me.cuadrolocalidad & "'"

end if

Muchísimas gracias por la pronta respuesta Icue Gonzalez. En este mismo momento voy a probar lo dicho y te hablo al respecto. Nuevamente GRACIAS¡

Nuevamente...Hola...me sirvio de mucho tu ayuda y si funciono. Gracias. Pero ahora tengo un nuevo problema. Me he dado cuenta que tambien necesito filtrar el subformulario por un nuevo campo "Fecha_Pago" que tiene el formato de __/__/__ . Entonces ahora necesito poder filtrar por un solo criterio, dos a la vez y por los tres criterios. He colocado este codigo en el boton: 

Private Sub Comando10_Click()

'uno solo activo

If Not IsNull([CuadroMes]) And IsNull([CuadroLocalidad]) And IsNull([CuadroFecha]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where MES_Pago='" & Me.CuadroMes & "'"

ElseIf IsNull([CuadroMes]) And IsNull([CuadroFecha]) And Not IsNull([CuadroLocalidad]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where Localidad='" & Me.CuadroLocalidad & "'"

ElseIf Not IsNull([CuadroFecha]) And IsNull([CuadroLocalidad]) And IsNull([CuadroMes]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where Fecha_Pago='" & Me.CuadroFecha & "'"

'2 activos

ElseIf IsNull([CuadroFecha]) And Not IsNull([CuadroMes]) And Not IsNull([CuadroLocalidad]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where MES_Pago='" & Me.CuadroMes & "' and Localidad='" & Me.CuadroLocalidad & "'"

ElseIf IsNull([CuadroLocalidad]) And Not IsNull([CuadroMes]) And Not IsNull([CuadroFecha]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where MES_Pago='" & Me.CuadroMes & "' and Fecha_Pago='" & Me.CuadroFecha & "'"

ElseIf IsNull([CuadroMes]) And Not IsNull([CuadroFecha]) And Not IsNull([CuadroLocalidad]) Then

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where Fecha_Pago='" & Me.CuadroFecha & "' and Localidad='" & Me.CuadroLocalidad & "'"

'3 activos

Else

Me.Cuentas_Pago.Form.RecordSource = "select * from Cuentas_Pago where Fecha_Pago='" & Me.CuadroFecha & "' and Localidad='" & Me.CuadroLocalidad & "' and MES_Pago='" & Me.CuadroMes & "'"

End If

End Sub

Y me sale error '2766' 

El objeto no contiene el objeto de automatizacion 'Formulario' y bueno ya no se que hacer espero pueda recibir su ayuda. Gracias

Me olvide de mencionar que para el "CuadroFecha" ya no es un cuadro combinado sino un CUADRO DE TEXTO... ¿el código es diferente? ¿O qué es lo que necesito hacer?

En la base que me has mandado ¿dónde quieres que te ponga los combinados?

Le enviare la BD en donde ya he podido filtrar el subformulario con ambos cuadros combinados. Y bueno pz como le dije... ahora necesito que me pueda ayudar en lo dicho en la parte de arriba. Muchas gracias

Espero me pueda ayudar ( no soy tan bueno explicando) Pero ante cualquier duda. Como vera en la BD de datos que le ha acabo de enviar tengo el formulario Fcuenta en donde ambos filtros funcionan perfectamente. Ahora quisiera filtrar tambien por tres criterios y el nuevo criterio seria "CuadroFecha" ( esta vez un cuadro de texto) en donde por ejemplo al escribir "2018" se muestre todos los registros del subformulario, en la cual el valor del campo "Fecha_Pago" ( de formato __/__/__) coincida con el año escrito. Claro recordando que se pueda filtrar tanto por un criterio, dos a la vez, o los tres al mismo tiempo ( de lo que se requiera) GRACIAS... por todo me ha servido de mucho su ayuda

Le veo sentido a que se puedan combinar Mes y Localidad, Fecha y Localidad, pero combinar Mes y fecha no le veo sentido. Si eliges un mes, ya va incluida esa fecha.

mm.. si. Bueno lo que pienso yo es lo siguiente. Supongamos que la DB ya ha guardado valores durante dos años. Entonce en mi campo "Fecha_Pago" hay registros desde el 01/01/2018 hasta el 31/12/2019 suponiendo. Entonces si necesito filtrar por ejemplo los registros del mes de ENERO pero solo del año 2018, si filtro SOLO por mes y localidad... obtendría valores de ambos años, pero si requiero solo de uno, pienso que seria necesario también una forma de filtrar por AÑO. Esta es la idea que tengo, pero no estoy seguro si estoy en lo correcto.

Es que tal como lo tienes, que en el combinado se elija sólo el nombre del mes te pasaría eso. Ta mando un ejemplo de como lo haría

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas