6 febrero, 2025

BUSCAR ELEMENTOS DELIMITADOS POR CARACTERES EN POWER APPS

Cuando trabajamos en Power Apps debemos tener muy en cuenta las limitaciones de la herramienta. Sin duda, las advertencias de delegación son una de esas limitaciones y, en algunos casos, ni siquiera vamos a ver una señal que lo indique, simplemente no va a mostrar los datos de la forma que los necesitamos.

Las soluciones son varias: usar funciones que admitan delegación, plantear una estructura diferente de datos que permita usar esas funciones, etc.

Pero hay ocasiones en las que la estructura de los datos ya viene dada y no queda más remedio que trabajar sobre ella. En este ejemplo vamos a imaginar que necesitamos validar que el usuario que entre en nuestra aplicación esté en una lista donde la disposición de los usuarios es por línea y los datos están delimitados por un punto y coma «;», así:

Esta lista llega hasta las 2007 líneas y encontrar un elemento (usuario) a partir de los 2000 registros se presenta como una tarea bastante compleja.

En primer lugar, la solución pasa por pasar todos los elementos de la lista a una colección, y cuando digo todos los elementos son TODOS. Una vez que tenemos todos los elementos en una colección «tColeccion» podremos realizar la búsqueda usando el siguiente código:

// Realizamos la búsqueda directamente utilizando el campo ID
ClearCollect(
    MiBusqueda;
    Filter(
        tColeccion;
        CountIf(
            Split(Nombre; ";");
            Trim(Value) = TextInput1.Text
        ) > 0
    )
);;

// Añadimos una notificación basada en el número de registros encontrados y los IDs correspondientes
If(
    CountRows(MiBusqueda) > 0;
    Notify(
        "Se encontraron " & CountRows(MiBusqueda) & " registros que coinciden con el nombre " & TextInput1.Text & ". IDs: " & Concat(MiBusqueda; ID; ", ");
        NotificationType.Success;
        5000
    );
    Notify("No se encontraron registros que coincidan con el nombre " & TextInput1.Text; NotificationType.Warning; 5000)
)

Con este código vamos a crear una colección de la colección tColecion que se va a llamar MiBusqueda y que Filtra las coincidencias entre el nombre que indiquemos en el TextInput1 y el contenidos de cada elemento delimitado.

Finalmente, mostramos una notificación que indiqué usuario que hemos buscado y su número de ID (que nos dirá el lugar de la lista en el que se encuentra).

Por ejemplo, mi nombre, que lo he colocado solo una vez en la línea 2003 de la lista:

Y de esta forma he encontrado la solución para realizar este trabajo. Supongo que existen otras alternativas igualmente válidas.

Y esto es todo, espero que sea de utilidad!.

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies