Uso de Filtros Opcionales en Reportes SQL
🧙‍♂️

Uso de Filtros Opcionales en Reportes SQL

¿Sabías que puedes crear reportes mucho más flexibles y dinámicos? En nuestra plataforma, los Filtros Opcionales permiten que un usuario decida si quiere filtrar la información por un criterio específico o si prefiere ver la data completa sin necesidad de modificar el código SQL.

💡 ¿Para qué sirven los filtros opcionales?

A diferencia de un filtro obligatorio, un filtro opcional solo se ejecuta si el usuario ingresa un valor al momento de descargar el reporte. Si el campo se deja vacío, el sistema ignora esa parte de la consulta, permitiendo obtener resultados globales sin errores.

🛠️ ¿Cómo se aplican?

La clave está en la sintaxis de las llaves dobles {{ }}. Cualquier condición que desees hacer opcional debe ir encerrada entre ellas dentro de tu consulta SQL.

Regla de oro: La variable dentro de la query debe ir antecedida por dos puntos (ej. :mi_variable) y debe coincidir exactamente con el Alias que configures en el paso de "Configuración de Filtros".

📋 Condiciones y Requisitos

Para que tus filtros opcionales funcionen a la perfección, ten en cuenta lo siguiente:

  1. Ubicación del operador: Si vas a incluir operadores lógicos como AND o OR, estos deben ir dentro de las llaves.
    • ✅ Correcto: {{ AND id = :area_id }}
    • ❌ Incorrecto: AND {{ id = :area_id }}
  2. La regla del WHERE: Si tu consulta utiliza la cláusula WHERE, no puedes dejar todos los campos como opcionales. Debe existir al menos una condición obligatoria para que la consulta sea válida.
  3. Sin comentarios: No incluyas comentarios de código (-- o /* */) dentro de tu consulta SQL, ya que esto generará un error al guardar.
  4. Consistencia de tipos: Asegúrate de que el tipo de filtro (Número, Fecha, Lista) coincida con el tipo de dato que espera tu base de datos.

📝 Ejemplo Práctico

Imagina que quieres un reporte de periodos, pero quieres que el usuario pueda elegir un periodo específico o verlos todos:

SQL

SELECT * FROM tabla_reporte ppi
WHERE ppi.estado = 'Activo'
{{ AND ppi.period_id = :period_id }}

En este caso, estado = 'Activo' es obligatorio, mientras que el filtro por period_id solo se aplicará si el usuario selecciona uno.

❓ Preguntas Frecuentes (FAQ)

1. ¿Qué pasa si el usuario no selecciona nada en un filtro opcional? El sistema simplemente omitirá la condición encerrada en {{ }} y ejecutará el resto de la consulta normalmente, devolviendo todos los registros que cumplan con las condiciones obligatorias.

2. ¿Puedo usar filtros opcionales con rangos de fechas? ¡Sí! Pero recuerda que para rangos debes utilizar siempre la condicionante BETWEEN dentro de las llaves para que la lógica de SQL sea correcta al recibir los dos valores del rango.

3. ¿Por qué mi reporte da error si puse filtros opcionales? Revisa que no hayas dejado comentarios en el código y que todos los operadores lógicos (AND/OR) estén dentro de las llaves. También verifica que el Alias en la configuración de filtros sea idéntico al nombre de la variable en la query (sin los dos puntos).