Filtro múltiple para un reporte

Yo estoy intentando llamar un reporte desde un formulario donde el usuario tiene varias opciones. Te explico: el formulario (menú) tiene un grupo de opciones para imprimir un reporte que contenga 1) la lista de todos los préstamos 2) todos los préstamos de una región (se elige la región) 3) los datos de un préstamo específico (se elige el préstamo). El usuario también puede elegir un rango de fechas para su reporte y el estado de los préstamos a imprimir (pendiente, cancelado, otorgado, cuenta incobrable). Si te das cuenta, son tres grupos de opciones.
Con las fechas no tengo problemas porque utilizo dos reportes (una consulta que filtra por fechas). Si selecciono solamente una región específica o un préstamo o todos los préstamos con cierto estado (pendientes, por ejemplo), tampoco hay problema. El problema viene al combinar uno de ellos con un estado del préstamo, por ejemplo, si quiero imprimir el reporte de los préstamos cancelados de Julio Márquez.
¿Se puede tener una Where Condition así? Porque yo hice algo como esto:
strWhere = "Prestatario = '" + Forms![Ver prestamos]!.....
strWhere = strWhere & "Estado =' " + Forms!.....
DoCmd. OpenReport docName, acPreview,, strWhere
¡No me funciono! ¿Hay una mejor manera de hacer esto? ¿Qué puedo hacer para solucionar esto?

1 respuesta

Respuesta
1
Como no tengo los datos necesarios para explicarte de forma específica, lo haré de forma general.
Una sentencia SQL en la cláusula WHERE sí puede contener varias condiciones, sólo debes utilizar las palabras clave AND si deseas que se cumplan las 2 condiciones [si fuesen 2] u OR si deseas que se cumpla por lo menos 1 de las 2 [si fuesen 2].
Por ejemplo si deseas que se recuperen los préstamos cancelados de Julio Márquez la sentencia quedaría algo así:
SELECT * FROM Prestamos WHERE Prestatario = 'Julio Márquez' AND Estado = 'Cancelado'
No sé exactamente cómo quedaría tu sentencia, pero me arriesgo a darte un ejemplo:
srtSQL = "SELECT * FROM Prestamos"
strWhere = " WHERE Prestatario = " & Control_que_muestra_el_nombre_del_prestatario
strWhere = strWhere & " AND Estado = " & Control_que_muestra_el_estado
[observa los espacios en blanco colocados antes de cada strWhere, esto es para que no se "unan" los caracteres en la sentencia final (por ejemplo: SELECT * FROM PrestamosWHERE...), que fue uno de los errores que cometiste].
Al final concatenas las cadenas que hayas usado:
strSQLFinal = srtSQL & strWhere
Espero haber sido de ayuda, pero si aún tienes dudas consúltame de nuevo y lo solucionaremos.
Saludos desde México. Juan Pablo E.P.
Juan Pablo, muchísimas gracias por responder y por tu ayuda. Fíjate que lo único que me faltaba era ese AND. ¡Estaba fácil pero cuando uno no sabe la sintaxis aún cosas sencillas se vuelven difíciles de resolver!
Disculpa la molestia pero quisiera aprovechar para hacer una pregunta más. En esos mismo reportes (en Detalle_Format) tengo las siguientes sentencias:
            If Me![NoGrupo] = 0 Then Me![NoGrupo].Visible = False _
             Else Me![NoGrupo].Visible = True
Esto ya lo he utilizado antes, pero al intentar abrir desde el formulario que ya te mencioné (cuando utilizo una Where Condition) me da un error. ¿A qué se debe?
De nuevo, ¡Muchas gracias por tu ayuda!
Pues no me queda muy claro, y por lo que veo el código no tiene error, si gustas puedes enviarme una copia de tu BD a [email protected] para así analizarla adecuadamente y darte alguna opinión mejor que esta.
Saludos desde México. Juan Pablo E.P.
¡Muchas gracias! Voy a enviarte una copia, si no de toda la BD (por políticas de mi empresa), por lo menos del código del formulario y el reporte. ¡Te agradecería mucho que me ayudes con ese detalle!
¡Te felicito por compartir tus conocimientos e invertir tu tiempo en estos foros!
Saludos desde Honduras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas