Busca uno o varios registros en una tabla.

Descripción

La función Filtrar busca registros en una tabla que satisface una fórmula. Use la función Filtrar para buscar un conjunto de registros que coinciden con uno o varios criterios y descartar aquellos que no lo hacen.

La función Búsqueda busca el primer registro de una tabla que satisface una fórmula. Use Búsqueda para encontrar un único registro que coincida con uno o varios criterios.

En ambos casos, la fórmula se evalúa para cada registro de la tabla. Los registros que dan como resultado true se incluyen en el resultado. Además de los operadores de la fórmula normal, puede usar los operadores in y exactin para las coincidencias de subcadenas.

Los campos del registro que se están procesando actualmente están disponibles en la fórmula. Solo tiene que hacer referencia a ellos por su nombre, como haría con cualquier otro valor. También puede hacer referencia a propiedades de control y otros valores en toda la aplicación. Para obtener más información, consulte los siguientes ejemplos y la sección sobre cómo trabajar con ámbito de registro.

La función Buscar busca registros en una tabla que contengan una cadena en una de sus columnas. La cadena puede estar en cualquier lugar dentro de la columna. Por ejemplo, si busca "rob" o "bert" encontrará una coincidencia en una columna que contiene "Roberto". La búsqueda no distingue mayúsculas de minúsculas. A diferencia de Filtrar y Búsqueda, la función Buscar usa solo una cadena de coincidencia en lugar de una fórmula.

Filtrar y Buscar devuelven una tabla que contiene las mismas columnas que la tabla original y los registros que coinciden con los criterios. Búsqueda devuelve solo el primer registro encontrado después de aplicar una fórmula para reducir el registro a un solo valor. Si no se encuentra ningún registro, las funciones Filtrar y Buscar devuelven una tabla vacía, y Búsqueda devuelve un registro en blanco.

Las tablas son un valor en PowerApps, tal como una cadena o un número. Se pueden pasar a funciones y las funciones pueden devolverlas. Las funciones Filtrar, Buscar y Búsqueda no modifican la tabla. En vez de eso, usan la tabla como argumento y devuelven una tabla, un registro o un solo valor de ella. Consulte cómo trabajar con tablas para más detalles.

Delegación

Cuando sea posible, PowerApps delegará las operaciones de filtro y ordenación al origen de datos y se desplazará por los resultados a petición. Por ejemplo, al iniciar una aplicación que muestre un control galería relleno con datos, inicialmente solo se pasará al dispositivo el primer conjunto de registros. Cuando el usuario se desplace, se mueven datos adicionales desde el origen de datos. El resultado es una reducción del tiempo de inicio de la aplicación y el acceso a conjuntos de datos muy grandes.

Sin embargo, es posible que la delegación no siempre se pueda realizar. Los orígenes de datos varían en cuanto a las funciones y los operadores que admiten con la delegación. Si no es posible la delegación completa de una fórmula, el entorno de creación marcará con una advertencia la parte que no se puede delegar. Cuando sea posible, considere la posibilidad de cambiar la fórmula para evitar funciones y operadores que no se puedan delegar. La lista de delegación detalla los orígenes de datos y operaciones que se pueden delegar.

Si la delegación no es posible, PowerApps extraerá solo un pequeño conjunto de registros para trabajar localmente. Las funciones de filtro y ordenación operarán en un conjunto reducido de registros. Es posible que en la galería no esté todo disponible, lo que podría generar confusión a los usuarios.

Para más información, consulte la introducción a la delegación.

Sintaxis

Filtrar( Table, Formula1 [, Formula2, ... ] )

  • Table: requerido. La tabla en la que se va a buscar.
  • Formula(s): requerido. Esta fórmula se evalúa para cada registro de la tabla y el resultado incluye aquellos registros que dan true como resultado. Puede hacer referencia a columnas dentro de la tabla. Si se proporciona más de una fórmula, los resultados de todas las fórmulas se combinan con la función And.

Buscar( Table, SearchString, Column1 [, Column2, ... ] )

  • Table: requerido. La tabla en la que se va a buscar.
  • SearchString: requerido. La cadena que se va a buscar. Si está en blanco o es una cadena vacía, se devolverán todos los registros.
  • Column(s): requerido. Los nombres de las columnas dentro de Table que se van a buscar. Las columnas en las que se va a buscar deben contener texto. Los nombres de las columnas deben ser cadenas e ir entre comillas dobles. Sin embargo, los nombres de las columnas deben ser estáticos y no se pueden calcular con una fórmula. Si se encuentra SearchString dentro de los datos de cualquiera de estas columnas como una coincidencia parcial, se devolverá el registro completo.

Búsqueda( Table, Formula [, ReductionFormula ] )

  • Table: requerido. La tabla en la que se va a buscar.
  • Formula: requerido. Esta fórmula se evalúa para cada registro de la tabla y se devolverá el primer registro que dé true como resultado. Puede hacer referencia a columnas dentro de la tabla.
  • ReductionFormula: opcional. Esta fórmula se evalúa en el registro que se ha encontrado, lo cual reduce el registro a un valor único. Puede hacer referencia a columnas dentro de la tabla. Si no se proporciona este parámetro, la función devuelve el registro completo de la tabla.

Ejemplos

Los ejemplos siguientes usan el origen de datos IceCream:

Fórmula Descripción Resultado
Filtrar( IceCream, OnOrder > 0 ) Devuelve aquellos registros en los que OnOrder es mayor que cero.
Filtrar( IceCream, Quantity + OnOrder > 225 ) Devuelve aquellos registros en los que la suma de las columnas Cantidad y OnOrder es mayor que 225.
Filtrar( IceCream, "chocolate" in Lower( Flavor ) ) Devuelve aquellos registros donde aparece la palabra "chocolate" en el nombre Flavor, sin tener en cuenta mayúsculas o minúsculas.
Filtrar( IceCream, Quantity < 10 && OnOrder < 20 ) Devuelve aquellos registros donde la cantidad es menor que 10 y la cantidad OnOrder es menor que 20. No hay registros que coincidan con estos criterios, por lo que se devolverá una tabla vacía.
Buscar( IceCream, "choc", "Flavor" ) Devuelve aquellos registros donde aparece la cadena "choc" en el nombre Flavor, sin tener en cuenta mayúsculas o minúsculas.
Buscar( IceCream, "", "Flavor" ) Dado que el término de búsqueda está vacío, se devolverán todos los registros.
Búsqueda( IceCream, Flavor = "Chocolate", Cantidad ) Busca un registro con un valor para Flavor que sea igual a "Chocolate". En este caso devuelve uno. Para el primer registro que se encuentra, devuelve el valor de Cantidad de ese registro. 100
Búsqueda( IceCream, Quantity > 150, Cantidad + OnOrder ) Busca un registro con un valor de Cantidad mayor que 100. En este caso devuelve varios. Para el primer registro que se encuentra, que es el Flavor "Vanilla", devuelve la suma de las columnas Quantity y OnOrder. 250
Búsqueda( IceCream, Flavor = "Pistachio", OnOrder ) Busca un registro con un valor para Flavor que sea igual a "Pistachio". En este caso no devuelve ninguno. Como no se encontró ninguno, Búsqueda devuelve un registro en blanco. en blanco
Búsqueda( IceCream, Flavor = "Vanilla" ) Busca un registro con un valor para Flavor que sea igual a "Vanilla". En este caso devuelve uno. Como no se proporcionó ninguna fórmula de reducción, se devuelve todo el registro. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Experiencia de búsqueda del usuario

En muchas aplicaciones, puede escribir uno o varios caracteres en un cuadro de búsqueda para filtrar una lista de registros en un conjunto de datos grande. A medida que escribe, la lista muestra solo los registros que coinciden con los criterios de búsqueda.

Los ejemplos que aparecen en el resto de este tema muestran los resultados de buscar en una lista, denominada Clientes, que contiene estos datos:

Para crear este origen de datos como una colección, cree un control Botón y establezca la propiedad AlSeleccionar en esta fórmula:

ClearCollect( Clientes, Tabla( { Nombre: "Fred Garcia", Empresa: "Northwind Traders" }, { Nombre: "Cole Miller", Empresa: "Contoso" }, { Nombre: "Glenda Johnson", Empresa: "Contoso" }, { Nombre: "Mike Collins", Empresa: "Adventure Works" }, { Nombre: "Colleen Jones", Empresa: "Adventure Works" } ) )

Como en este ejemplo, puede mostrar una lista de registros en un control Galería en la parte inferior de una pantalla. Cerca de la parte superior de la pantalla, puede agregar un control Entrada de texto denominado SearchInput, de modo que los usuarios puedan especificar los registros que más les interesen.

A medida que el usuario escribe caracteres en SearchInput, automáticamente se filtran los resultados en la galería. En este caso, se configura la galería para que muestre los registros para los que el nombre del cliente (no el nombre de la empresa) comienza con la secuencia de caracteres de SearchInput. Si el usuario escribe co en el cuadro de búsqueda, la galería muestra estos resultados:

Para filtrar según la columna Nombre, establezca la propiedad Elementos del control Galería en una de estas fórmulas:

Fórmula Descripción Resultado
Filtrar( Clientes, StartsWith( Nombre, SearchInput.Text ) ) Filtra el origen de datos Clientes para los registros en los que la cadena de búsqueda aparece al principio de la columna Nombre. La prueba no distingue mayúsculas de minúsculas. Si el usuario escribe co en el cuadro de búsqueda, la galería mostrará Colleen Jones y Cole Miller. La galería no mostrará Mike Collins porque la columna Nombre de ese registro no comienza por la cadena de búsqueda.
Filtrar( Clientes, SearchInput.Text in Name ) Filtra el origen de datos Clientes para los registros en los que la cadena de búsqueda aparece en cualquier parte de la columna Nombre. La prueba no distingue mayúsculas de minúsculas. Si el usuario escribe co en el cuadro de búsqueda, la galería mostrará Colleen Jones, Cole Miller y Mike Collins ya que la cadena de búsqueda aparece en algún lugar de la columna Nombre de todos esos registros.
Buscar( Clientes, SearchInput.Text, "Nombre" ) De forma parecida al uso del operador in, la función Buscar busca una coincidencia en cualquier parte de la columna Nombre de cada registro. Tenga en cuenta que debe incluir el nombre de la columna entre comillas dobles.

Puede expandir la búsqueda para incluir la columna Empresa además de la columna Nombre:

Fórmula Descripción Resultado
Filtrar( Clientes, StartsWith( Nombre, SearchInput.Text ) || StartsWith( Empresa, SearchInput.Text ) ) Filtra el origen de datos Clientes de aquellos registros en los que la columna Nombre o la columna Empresa comienza por la cadena de búsqueda (por ejemplo, co). El operador || será true si la función StartsWith es también true.
Filtrar( Clientes, SearchInput.Text en Nombre || SearchInput.Text en Empresa ) Filtra el origen de datos Clientes de aquellos registros en los que la columna Nombre o la columna Empresa contienen la cadena de búsqueda en cualquier lugar (por ejemplo, co).
Buscar( Clientes, SearchInput.Text, "Nombre", "Empresa" ) De forma parecida al uso del operador in, la función Buscar busca en el origen de datos Clientes de aquellos registros en los que la columna Nombre o la columna Empresa contienen la cadena de búsqueda en cualquier lugar (por ejemplo, co). La función Buscar es más fácil de leer y escribir que Filtrar si desea especificar varias columnas y varios operadores in. Tenga en cuenta que debe incluir los nombres de las columnas entre comillas dobles.