Funcións Filtrar, Buscar e Busca en Power Apps

Busca un ou máis rexistros dunha táboa.

Descripción

A función Filtro atopa os rexistros nunha táboa que satisfagan unha fórmula. Use Filtro para atopar un conxunto de rexistros que cumpran un ou varios criterios e descartar aqueles que non o fagan.

A función Busca atopa o primeiro rexistro nunha táboa que satisfai unha fórmula. Use Busca para atopar un único rexistro que coincida cun ou varios criterios.

Para os dous, a fórmula avalíase para cada rexistro da táboa. Os rexistros que fornecen verdadeiro inclúense no resultado. Ademais dos operadores de fórmula normais, pode usar os operadores en e exactin para coincidencias de cadeas secundarias.

Os campos do rexistro que se están a procesar actualmente están dispoñibles na fórmula. Use o operador ThisRecord ou simplemente faga referencia aos campos por nome como faría con calquera outro valor. O operador As tamén se pode usar para nomear o rexistro que se está a procesar, o que pode axudar a que a fórmula sexa máis fácil de comprender e facer que os rexistros anidados sexan accesibles. Para obter máis información, consulte os seguintes exemplos e traballar co ámbito do rexistro.

A función Buscar atopa rexistros dunha táboa que conteñen unha cadea nunha das súas columnas. A cadea pode aparecer en calquera parte da columna; por exemplo, buscar "rob" ou "bert" atoparía unha coincidencia nunha columna que conteña "Robert". A busca diferenza entre maiúsculas e minúsculas. Ao contrario que Filtro e Busca, a función Busca usa unha soa cadea para combinar en lugar dunha fórmula.

Filtro e Buscar devolven unha táboa que contén as mesmas columnas que a táboa orixinal e os rexistros que coinciden cos criterios. Busca devolve só o primeiro rexistro atopado, despois de aplicar unha fórmula para reducir o rexistro a un único valor. Se non se atopan rexistros, Filtro e Busca devolven unha táboa baleira e Busca devolve en branco.

As táboas son un valor en Power Apps, ao igual que unha cadea ou un número. Pódense pasar a e devolver de funcións. Filtro, Busca e Buscar non modifican unha táboa. En lugar diso, toman unha táboa como argumento e devolven unha táboa, un rexistro ou un único valor. Para obter máis detalles, consulte Traballar con táboas.

Delegación

Se é posible, Power Apps delegará as operacións de filtraxe e ordenación á orixe de datos e páxina a través dos resultados a pedido. Por exemplo, cando abre unha aplicación que mostra un control de Galería cheo de datos, só aparecerá inicialmente o primeiro conxunto de rexistros no dispositivo. Cando o usuario se desprace, extraeranse máis datos da orixe de datos. Deste xeito acelérase a hora de inicio da aplicación e pódese acceder a conxuntos de datos moi grandes.

Non obstante, non sempre se pode delegar. As orixes de datos varían segundo as funcións e operadores que admiten coa delegación. Se non é posible facer unha delegación completa dunha fórmula, o ambiente de creación marcará cun aviso a parte que non se pode delegar. Sempre que sexa posible, pense en cambiar a fórmula para evitar as funcións e operadores que non se poden delegar. A lista de delegación enumera as orixes de datos e operacións que se poden delegar.

Se a delegación non é posible, Power Apps só extraerá un pequeno conxunto de rexistros para traballar a nivel local. As funcións de filtraxe e ordenación operarán nun conxunto reducido de rexistros. Pode que os elementos dispoñibles na Galería non sexan o historial completo, o que podería confundir os usuarios.

Consulte a visión xeral da delegación para obter máis información.

Sintaxe

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

  • Table: Obrigatorio. Táboa para buscar.
  • Formula(s): Obrigatorio. A fórmula pola que se avalía cada rexistro da táboa. A función devolve todos os rexistros que fornecen verdadeiro. Pode facer referencia ás columnas dentro da táboa. Se fornece máis dunha fórmula, os resultados de todas as fórmulas combínanse coa función And.

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

  • Table: Obrigatorio. Táboa para buscar.
  • SearchString - Obrigatorio. Cadea que buscar. Se aparece en branco ou unha cadea baleira, devolveranse todos os rexistros.
  • Column(s) - Obrigatorio. Os nomes das columnas dentro da Táboa para buscar. As columnas para buscar deben conter texto. Os nomes das columnas deben ser entre cadeas e estar entre comiñas dobres. Non obstante, os nomes da columna deben ser estáticos e non se poden calcularse cunha fórmula. Se se atopa SearchString dentro dos datos dalgunha destas columnas como unha coincidencia parcial, devolverase o rexistro completo.

Nota

Para SharePoint e orixes de datos de Excel que conteñen nomes de columna con espazos, especifique cada espazo como "_x0020_". Por exemplo, especifique o "Column Name" como "Column_x0020_Name".

LookUp( Table, Formula [, ReductionFormula ] )

  • Table: Obrigatorio. Táboa para buscar. Na interface de usuario, a sintaxe móstrase como orixe enriba da caixa de funcións.
  • Formula: Obrigatorio. A fórmula pola que se avalía cada rexistro da táboa. A función devolve o primeiro rexistro que fornece verdadeiro. Pode facer referencia ás columnas dentro da táboa. Na interface de usuario, a sintaxe móstrase como condición enriba da caixa de funcións.
  • ReductionFormula - Opcional. Esta fórmula avalíase sobre o rexistro que se atopou e logo reduce o rexistro a un único valor. Pode facer referencia ás columnas dentro da táboa. Se non emprega este parámetro, a función devolve o rexistro completo da táboa. Na interface de usuario, a sintaxe móstrase como resultado enriba da caixa de funcións.

Exemplos

Os exemplos seguintes usan a orixe de datos Xeado:

Fórmula Descripción Resultado
Filter( IceCream, OnOrder > 0 ) Devolve rexistros onde OnOrder é maior que cero.
Filter( IceCream, Quantity + OnOrder > 225 ) Devolve rexistros onde a suma das columnas Cantidade e OnOrder é maior que 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Devolve rexistros onde aparece a palabra "chocolate" no nome de Sabor, independentemente das maiúsculas ou minúsculas.
Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Devolve rexistros onde Cantidade é inferior a 10 e OnOrder é inferior a 20. Ningún rexistro coincide con estes criterios, polo que se devolve unha táboa baleira.
Search( IceCream, "choc", "Flavor" ) Devolve rexistros onde aparece a cadea "choc" no nome de Sabor, independentemente das maiúsculas ou minúsculas.
Search( IceCream, "", "Flavor" ) Debido a que o termo de busca está baleiro, devólvense todos os rexistros.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Busca un rexistro co Sabor igual a "Chocolate", dos que hai un. No primeiro rexistro atopado, devolve a Cantidade dese rexistro. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Buscas un disco cunha Cantidade maior que 150, dos que hai múltiples. Para o primeiro rexistro que se atope, que é o Sabor "Vainilla", devolve a suma das columnas de Cantidade e OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Busca un rexistro co Sabor igual a "Pistacho", dos que non hai ningún. Debido a que non se atopou ningún, Busca devolve en branco. en branco
LookUp( IceCream, Flavor = "Vanilla" ) Busca un rexistro co Sabor igual a "Vainilla", dos que hai un. Como non se proporcionou ningunha fórmula de redución, devólvese o rexistro completo. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Experiencia de busca do usuario

En moitas aplicacións, pode escribir un ou varios caracteres nunha caixa de busca para filtrar unha lista de rexistros nun gran conxunto de datos. Ao escribir, a lista só mostra os rexistros que coinciden cos criterios de busca.

Os exemplos do resto deste tema mostran os resultados da busca dunha lista chamada Clientes que contén estes datos:

Para crear esta orixe de datos como unha colección, cree un control de Botón e configure a súa propiedade OnSelect nesta fórmula:

ClearCollect( Customers, Table( { Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" } ) )

Como neste exemplo, pode mostrar unha lista de rexistros nun control de galería na parte inferior dunha pantalla. Cerca da parte superior da pantalla, pode engadir un control de Entrada de texto, nomeado SearchInput, para que os usuarios poidan especificar que rexistros lles interesan.

A medida que o usuario escribe caracteres en SearchInput, os resultados da galería fíltranse automaticamente. Neste caso, a galería está configurada para mostrar rexistros para os que o nome do cliente (non o nome da empresa) comeza coa secuencia de caracteres en SearchInput. Se o usuario escribe co na caixa de busca, a galería amosa estes resultados:

Para filtrar pola columna Name, estableza a propiedade Elementos do control de galería nunha destas fórmulas:

Fórmula Descripción Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtra a orixe de datos Customers polos rexistros nos que aparece a cadea de busca ao comezo da columna Name. A proba non diferenza entre maiúsculas e minúsculas. Se o usuario escribe co na caixa de busca, a galería mostra Colleen Jones e Cole Miller. A galería non mostra Mike Collins porque a columna Name para ese rexistro non comeza coa cadea de busca.
Filter( Customers, SearchInput.Text in Name ) Filtra a orixe de datos Customers polos rexistros nos que aparece a cadea de busca en calquera lugar da columna Name. A proba non diferenza entre maiúsculas e minúsculas. Se o usuario escribe co na caixa de busca, a galería mostra Colleen Jones, Cole Miller, e Mike Collins porque a cadea de busca aparece nalgún lugar da columna Name de todos eses rexistros.
Search( Customers, SearchInput.Text, "Name" ) Semellante ao uso do operador in, a función Search busca unha coincidencia en calquera parte da columna Name de cada rexistro. Teña en conta que debe incluír o nome da columna entre comiñas dobres.

Pode ampliar a súa busca para incluír a columna Company así como a columna Name:

Fórmula Descripción Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Filtra a orixe de datos Customers polos rexistros nos cales a columna Name ou a columna Company comeza coa cadea de busca (por exemplo, co). O operador || é verdadeiro se a función StartsWith é verdadeira.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Filtra a orixe de datos Customers polos rexistros nos cales a columna Name ou a columna Company contén a cadea de busca (por exemplo, co) en calquera parte.
Search( Customers, SearchInput.Text, "Name", "Company" ) Similar ao uso do operador in, a función Search busca na orixe de datos Customers os rexistros nos cales a columna Name ou a columna Company contén a cadea de busca (por exemplo, co) en calquera parte. A función Search é máis fácil de ler e escribir que Filter se desexa especificar varias columnas e varios operadores in. Teña en conta que debe incluír os nomes das columnas entre comiñas dobres.