En este artículo vamos a explorar ¿Cómo construir filtros dinámicos combinando múltiples criterios?, y como yapa el concepto de delegación, que puede marcar la diferencia entre una app que funciona bien y una que presenta resultados incompletos.
💡Filtros dinámicos con múltiples criterios
Supongamos que tenemos una tabla llamada Observation_Table con campos como Aprobador, Responsable, Gerencia, Descripción y Código. Queremos que el usuario pueda filtrar la tabla usando cualquier combinación de estos criterios.
Es decir, que la tabla se vaya filtrado automáticamente a medida que los "Text Input" de los filtros tengan valor. Puede que el primer filtro tenga valor, o solo el del medio o todos, o ninguno.
En Power Apps, podemos usar una fórmula como esta:
Filter(
Observation_Table,
IsBlank(Filter_Aprobador.Text) ||
StartsWith(Text(Aprobador), Filter_Aprobador.Text),
IsBlank(Filter_Responsable.Text) ||
StartsWith(Text(Responsable), Filter_Responsable.Text),
IsBlank(Filter_Gerencia.Text) ||
StartsWith(Text(Gerencia), Filter_Gerencia.Text),
IsBlank(Filter_Descripcion.Text) ||
StartsWith(Text(Descripcion), Filter_Descripcion.Text),
IsBlank(Filter_Codigo.Text) ||
StartsWith(Text(Codigo), Filter_Codigo.Text)
)
Esta lógica significa que, para cada campo de filtro, si el
valor está en blanco se ignora el criterio, y si tiene datos se filtra usando
StartsWith para buscar coincidencias desde el inicio del texto.
¿Por qué funciona?
Por lo tanto, una fila se incluye si:
- Filter_Aprobador.Text está vacío O coincide con el aprobador de la fila
- Y Filter_Responsable.Text está vacío O coincide con el responsable de la fila
- Y Filter_Gerencia.Text está vacío O coincide con la gerente de la fila
Solo los filtros que tengan valor filtran la tabla.
Otra forma de verlo:
- Si completas el campo "De", solo se muestran los correos de ese remitente.
- Si también completas "El asunto contiene", se reduce aún más.
- Pero si borras "De", el filtro se elimina y solo se muestra "El asunto contiene".
📚Hablemos de delegación: ¿Qué es la delegación en Power Apps?
La delegación es el proceso por el cual Power Apps envía la
consulta o el cálculo directamente a la fuente de datos para que lo ejecute
allí, devolviendo solo los resultados necesarios. Esto es fundamental cuando
trabajamos con grandes volúmenes de información.
Cuando usamos funciones o condiciones no delegables (por
ejemplo, StartsWith en ciertas columnas de SharePoint), Power Apps traerá solo
un número limitado de registros (500 por defecto, 2000 como máximo) y aplicará
el filtro localmente. Esto puede causar que falten registros en los resultados.
✅Buenas prácticas para evitar problemas
- Usar funciones delegables siempre que sea posible (consultar documentación oficial).
- Evitar funciones como Search, Mid o StartsWith sobre columnas no delegables.
- Filtrar primero por criterios delegables y luego aplicar filtros adicionales localmente.
- Considerar Dataverse o SQL si se requiere mayor flexibilidad.
Comentarios
Publicar un comentario