Crear varios filtros mediante casilla de verificación

Te escribo porque estoy haciendo una base de datos en access 2003, en la cual debo aplicar en el formulario 3 filtros; es decir; una para fecha (inicio y fin), otra de responsabilidad y el ultimo por nombre del tecnico; para seleccionar cualquiera de los 3 filtros antes mencionados, lo estoy haciendo mediante casilla de verificacion; que cuando selecciono la casilla se activa el cuadro de texto y los combo de lista, y que ademas muestre el informe mediante los filtros que se seleccionaron, y para eso quiero colocar un botón que me muestre el informe mediante el o los filtros que se hayan seleccionado, espero haber explicado bien y que me puedas ayudar y me tengas una pronta respuesta.
1

1 Respuesta

21.975 pts. La creación es maravillosa y demuestra el poder y...
Para abrir un archivo con filtros puedes hacer lo siguiente.
Abre el informe
DoCmd. OpenReport "Nombre Informe", Vista,, "Criterio de Búsqueda"
Donde
Nombre Informe = Nombre de Informe que deseas Abrir
Vista=forma que quieres ver , por defecto  acViewPreview
Criterio de Búsqueda: Es como la clausula Where de una consulta Ej. Fecha_inicio > '02/03/2009'...
Hola de verdad no entendí muy bien el código que me dijiste yo lo escribí así:
stDocName = "consulta"
DoCmd.OpenReport stDocName, acViewPreview, verificación49, where, acWindowNormal, Cuadro_combinado47 = id_respon
ya que nombre de la onsulta es "consulta" verificación49 es en nombre de la casilla de verificación, cuadro_combinado47 es el combo donde se muestra lo que esta en la base de datosy el id_respon es el campo clave de la tabla donde estoy llamando los valores de responsabilidad.
Y con respecto a las fechas tampoco te entendí, porque en la tabla tengo un solo valor de fecha y para la consulta; es decir el filtro tengo que hacer la consulta de fecha entre un rango fin e inicio, si me pudieras explicar nuevamente te lo agradecería, espero una pronta respuesta de tu parte y gracias.
Cuando creas un reporte (Informe), lo haces mediante una tabla o consulta con diferentes campos que aparecen en él.
Mediante DoCmd. OpenReport, puedes abrir un informe con diferentes características.
1.- Te pide el nombre del informe
2.-La forma en que se verá
3.-El nombre de algún filtro
4,-Criterio
Si tu informe se llama "MiInforme" y quieres que se habrá como vista previa sin filtro, pones.
DoCmd. OpenReport "MiInforme", AcViewPreview
Ahora si en el informe hay un campo llamado "Fecha" y esa la tienes que mostrar de acuerdo a un rango, entonces en el formulario debes pones dos controles para que puedan seleccionar una fecha inicial y una final. En este Ejemplo los controles se llamarán "Fecha1" y "Fecha2" respectivamente. Entonces el llamado sería.
DoCmd.OpenReport "MiInforme",AcViewPreview, , "fecha >= '" & me.Fecha1 & "'  and fecha <= '" & me.fecha2 & "'"
Si la responsabilidad la tienes mediante un cuadro combinado entonces, supongamos que el cuadro combinado se llame "Combo_Reponsabilidad". Entonces.
DoCmd.OpenReport "MiInforme",AcViewPreView, , "reponsabilidad='" & me.combo_Reponsabilidad & "'"
Y Así por el Estilo.
Hola nuevamente, estuve chequeando tu código lo cual coloque en el generador de código, ese código lo voy a colocar en el botón para mostrar el reporte, pero tu me escribiste si deseo que se muestre vista previa del informe sin filtro, y es todo lo contrario deseo que cuando me muestra la vista previa sea mediante los tres filtros que estoy haciendo, probé con uno el de las fechas, pero me da un error que dice que no coinciden los datos en la expresión de criterios y luego coloque el otro filtro de responsabilidad y me da el mismo error no coindicen los datos en la expresión de criterios, yo creo que te comente que los 3 filtros se pueden activar solo 3, 2 o 1; es decir que coloco en el código para que me muestre los filtros seleccionados, espero haberme explicado bien y gracias, espero que me ayudes.
Los Ejemplos que te doy los debes adaptar a los nombres reales de los campos con los que estas trabajando, tanto en el formulario como en el informe, no significa que simplemente copias lo que te doy y funciona.
Puedes abrir el informe las veces que quieras con filtros distintos o sin ninguno, dependiendo de las necesidades.
Hola si yo se, yo lo adapte a mis variables, pero me dan esos errores, por ejemplo en el filtro de las fechas en la tabla solo tengo una sola variable llamada fecha, la cual esta automatica; es decir, que aparece la fecha en la cual se ingresan los datos en la base de datos, para el hacer el informe en el formulario coloque una casilla de verificación y 2 cuadros de texto para que se ingresen el rango de fechas que se quiere en el informe, a su vez; deseo aplicar otros 2 filtros que igual mente se seleccionan por casilla de verificación y 2 combo lista que me traern la información de las otras 2 tablas, pero intente con el código que me enviaste (adaptándolo a mi problema) igualmente no me funciono; no se si hay que colocar un parámetro en la consulta la cual no tiene, de verdad te agradecería si me pudieras ayudar, ay que creo que no nos estamos entendiendo, espero una pronta respuesta de tu parte. Gracias
Si en el Informe tienes un campo fecha entonces, ese es tu rango.
Si tienes dos campos de Texto esos debes usar. Ej.
DoCmd.OpenReport "MiImforme",ACViewPreView,,"fecha>= '" & me.texto1 & "' and fecha <= '" & texto2 & "'"
Y eso es todo. Ahora Bien los Las casillas son Sólo para habilitar/Deshabilitar los Filtros, con ellos sabes de que modo debes abrir el informe.
Hola, de verdad revise otra vez y me dan los mismos errores, sera que yo te puedo enviar algún correo yo que estoy haciendo para que lo verifiques y veas si esta bien adaptado a mi problemática porque de verdad no entiendo que más hacer de verdad te lo agradecería, espero una pronta respuesta de tu parte. Gracias
Hola, como que no te gusto lo que te pedí, esta bien te voy a enviar el código que tengo en el botón de vista previa informes(con cualquiera de los tres filtros activados)
Private Sub vista_previa_Click()
Dim stDocName As String
stDocName = "Consulta"
' Este es para el filtro de las fechas
DoCmd.OpenReport stDocName, acPreview, , "fecha >= '" & Me.Fecha1 & "' And fecha <= '" & Me.fecha2 & "'"
' Este es para el filtro de responsabilidad
DoCmd.OpenReport stDocName, acViewPreview, , where, acWindowNormal, " id_respon = '" & Me.Cuadro_combinado22 & "'"
'Este es para el filtro de tecnico
DoCmd.OpenReport stDocName, acViewPreview, , where, acWindowNormal, " id_tecnico = '" & Me.Cuadro_combinado24 & "'"
Exit_vista_previa_Click:
Exit Sub
Err_vista_previa_Click:
Resume Exit_vista_previa_Click
End Sub
Lo que quiero hacer es que el informe me muestre los datos mediante cualquiera de los 3 filtros que yo seleccione.
Espero que me ayudes de verdad y nuevamente gracias
1.-¿Cómo se llama el informe que quieres abrir?
2.-Para abrir el informe no debes poner la palabra where.
2.-Si ya estás abriendo el informe como Vista Previa (AcViewPreview), ¿por qué después pones AcWindowsNormal?.
Respóndeme esto y veremos como arreglar tu problema
Hola como estas, eso lo puse para probar de igual forma si lo coloco como tu me dijiste me dan los errores que te comente, el nombre del informe se llama "Consulta", no se si con un solo informe se puedan aplicar los tres filtros que es lo que tengo, gracias por ayudarme, espero una pronta respuesta. Gracias.
Entonces
Para la fecha
DoDmd.OpenReport "Consulta", AcViewPreview, , "fecha >= '" & me.fecha1 & "' and fecha <= '" & me.fecha1 & "' "
Para la Responsabilidad :
Si id_respon es texto entonces
DoCmd.OpenReport "Consulta",AcViewPreview, , "id_respon ='" & me.cuadro_combinado22 & "' "
Si id_respon es numerico entonces
DoCmd.OpenReport "Consulta",AcViewPreview, , " id_respon=" & me.cuadro_combinado22
Puedes abrir el mismo informe de distintas maneras según el filtro que necesites.
Hola como estas de verdad el código que me pasaste me funciono en cierta parte, ya puedo hacer 2 de los 3 filros, el filtro que no puedo realizar es el de las fechas, te explico en mi tabla solo tengo un solo campo que almacena las fechas en el momento que se ingresan los datos mediante el formulario, para realizar el informe mediante el filtro de fechas tengo 2 cuadro de texto para ingresar el rango de fechas que deseo consultar, al ejecutarlo me da un error que me dice que se requiere un objeto; otro punto es que yo te comente que se deben ejecutar los 3 filtros, los 2 o un solo filtro, con el código que tu me pasaste cuando voy a ejecutar 2 filtros solo me toma el primer filtro como hago para que me filtre el segundo filtro que active, de verdad espero una pronta respuesta de tu parte. Muchas Gracias.
Para que trabajes con más de un filtro debes crear una secuencia por ejemplo
Si verificación 1 esta activado entonces
Abro el informe con filtro 1
Si verificación 2 esta activado entonces
Abro el informe con filtro 2
Si verificación 3 está activado entonces
Abro el informe con filtro 3
Obviamente debes hacerlo con codigo if then   etc.
Para que te funcione con la fecha debe estar el campo fecha en el informe, aunque sea oculto, no basta con que esté en la tabla.
Hola como estas, con respecto al filtro de las fehas no te entendí lo que me qusistes decir; con respecto al código intente colocarlo pero no se que comando colocar en la parte de verificar si la casilla esta activada o no; es decir, intente colocando:
if verificacion18 (esta activado no se que comando o instruccion colocar aqui) then
DoCmd.OpenReport "Consulta", acViewPreview, , " id_respon=" & Me.Cuadro_combinado22
 else
if verificacion20 (esta activado no se que comando o instruccion colocar aqui) then
DoCmd.OpenReport "Consulta", acViewPreview, , " id_tecnico=" & Me.Cuadro_combinado24
end if
end if
Si me pudieras ayudar te lo agradecería. Muchas gracias
Estuve haciendo algunas pruebas y esto funciona así .
Ejemplo. Si los textos que tienen las fechas se llaman fecha1 y fecha2 entonces:
dim f1,f2 as String
f1=month(cdate(me.fecha1)) & "/" & day(cdate(me.fecha1)) & "/" & year(cdate(me.fecha1))
f2=month(cdate(me.fecha2)) & "/" & day(cdate(me.fecha2)) & "/" & year(cdate(me.fecha2))
   if me.verificacion20.value=-1 then
<h3>   DoCmd.OpenReport "Consulta",AcViewPreview, , "fecha >= #"  & f1 & "# and fecha <= #" & f2 & "#"</h3>
exit sub
end if
Y los otros filtros siguen iguaL.
Como habrás notado, las cadillas de verificación usan la propiedad value en -1 cuando están seleccionadas.
Hola como estas, te comento con el código que me enviaste ya realizo el filtro de fechas, pero si activo los 2 filtros o los 3 filtros en el informe se muesta el primer filtro activado no toma los otros, te mando el código para que lo verifiques y cheques que esta mal
Private Sub vista_previa_Click()
If Me.Verificación16.Value = -1 Then
   DoCmd.OpenReport "Consulta", acViewPreview, , "fecha >= #" & Me.Fecha1 & "# and fecha <= #" & Me.fecha2 & "#"
   Exit Sub
End If
If Me.Verificación18.Value = -1 Then
DoCmd.OpenReport "Consulta", acViewPreview, , "id_respon=" & Me.Cuadro_combinado22
Exit Sub
End If
If Me.Verificación20.Value = -1 Then
DoCmd.OpenReport "Consulta", acViewPreview, , " id_tecnico=" & Me.Cuadro_combinado24
Exit Sub
End If
End Sub
Si me pudieras ayudar y muchas Gracias
sI QUIERES PONER MÁS DE UN FILTRO AL MISMO TIEMPO ENTONCES DEBES DAR MÁS OPCIONES, y combinaciones
POR ejemplo si quieres filtrar por fechas y además por responsabilidad entonces
if me.verificacion16.value =-1 and me.verificacion18.value=-1 then
docmd.openReport "consulta",acviewpreview,,"fecha>=#" & me.fecha1 &"# and fecha <= #" & me.fecha2 & "# and id_respon='" & me.Cuadro_Combinado22 & "' "
exit sub
end if
Si quieres aplicar todos los filtros
if  me.varificacion16.VALUE=-1 AND me.verificacion18.value=-1 and me.varificacion20.value=-1 then
Abres el informe con los 3 filtros. Y así por el estilo
end if
Puedes hacer las combinaciones que quieras
Hola como estas estuve probando el código que me enviaste y me sigue pasando lo mismo se muestra siempre el primer filtro que active y el segundo no lo toma, si de verdad me puedes ayudar te lo agradezco. Muchas Gracias
Ya te lo dije, debes aplicar los filtros combinados
Ejemplo
Si quieres responsabilidad y técnico juntos
Docmd.OpenReport "Consulta",AcViewPreview,, "id_tecnico=" & me.cuadrocombinado24 & " and id_respon=" & me.cuadrocombinado22
Hola como estas, disculpa nuevamente mi insistencia en lo mismo, pero de verdad intente acomodar el código que me enviaste para activar varios filtros y de verdad te entiendo la idea pero me da un error que me dice que no coinciden los tipos y no se a que se deba ese error porque las variables de los cuadros de texto son numéricos y los cuadro de texto para las fechas son texto, y no creo que eso tenga algo que ver, este el código como lo acomode:
If Verificación18.Value = -1 And Verificación20.Value = -1 Then
DoCmd.OpenReport "Consulta", acViewPreview, , "id_respon=" & Me.Cuadro_combinado22 And "id_tecnico=" & Me.Cuadro_combinado24
End If
Y eso me pasa en todos los demás filtros combinados me da el mismo error si de verdad me puedes ayudar te lo agadeceria.
El segundo and debe estar entre comillas
DoCmd.OpenReport "Consulta", acViewPreview, , "id_respon=" & Me.Cuadro_combinado22  & "And  id_tecnico=" & Me.Cuadro_combinado24
Hola como estas, de verdad disculpa la insistencia, pero me sigue pasando el mismo problema si activo dos filtros me muestra siempre el primer filtro activado y ya de verdad no se que más hacer, si puedes revisar bien el código que me enviaste te lo agradecería.
Enviame la aplicación para ver cual es el problema
[email protected]
Hola como estas te envía la aplicación al correo que me enviaste, espero que de verdad me puedas ayudar, te explico solo me falta mostrar los informes cuando aplico 2 o los 3 filtros, espero una pronta respuesta de tu parte y Muchas Gracias
Estoy contestando por correo
Hola como estas te envíe las modificaciones al correo
Hola como estas te respondí nuevamente al correo porque ahora tengo otro error en los filtros de responsabilidad, técnico y cuando activo el de responsabilidad y técnico, espero una pronta respuesta de tu parte. Gracias
Hola como estas, ya pude resolver el problema que me arrojaba cuando hacia 3 filtros, de verdad fuiste de mucha ayuda y me ayudastes mucho, eres el mejor, muchas GRACIAS-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas