Trovano una o più record in un tabella.

Descrizione

La funzione Filter trova i record in una tabella che soddisfano una formula. Usare la funzione Filter per trovare un set di record che soddisfano uno o più criteri e ignorare quelli che non li soddisfano.

La funzione LookUp trova il primo record in una tabella che soddisfa una formula. Usare la funzione LookUp per trovare un singolo record che corrisponde a uno o più criteri.

Per entrambe le funzioni, la formula viene valutata per ogni record della tabella. I record con valore true vengono inclusi nel risultato. Oltre agli operatori normali di formula, è possibile anche usare gli operatori in e exactin per le corrispondenze di sottostringhe.

I campi del record attualmente in fase di elaborazione sono disponibili nella formula. È sufficiente farvi riferimento per nome, analogamente a qualsiasi altro valore. È anche possibile fare riferimento alle proprietà del controllo e ad altri valori in tutta l'app. Per informazioni dettagliate, vedere gli esempi seguenti e Utilizzo dell'ambito dei record.

La funzione Search trova i record in una tabella che contengono una stringa in una sola delle colonne. La stringa può trovarsi in qualsiasi punto all'interno della colonna. Ad esempio, la ricerca di "rob" o "bert" potrebbe trovare una corrispondenza in una colonna che contiene il nome "Robert". La ricerca non fa distinzione tra lettere maiuscole e minuscole. A differenza delle funzioni Filter e LookUp, la funzione Search usa una stringa singola per la corrispondenza, anziché una formula.

Le funzioni Filter e Search restituiscono una tabella che contiene le stesse colonne della tabella originale e i record che soddisfano i criteri. La funzione LookUp restituisce solo il primo record trovato, dopo aver applicato una formula per ridurre il record a un singolo valore. Se non vengono trovati record, le funzioni Filter e Search restituiscono una tabella vuota e la funzione LookUp restituisce blank.

In PowerApps le tabelle sono un valore, allo stesso modo delle stringhe e dei numeri. Le tabelle possono essere passate e restituite da funzioni. Le funzioni Filter, Search e LookUp non modificano una tabella. Al contrario, prendono una tabella come argomento e restituiscono una tabella, un record o un singolo valore. Per altre informazioni, vedere Working with tables (Utilizzo delle tabelle).

Delega

Quando è possibile, PowerApps delegherà le operazioni di filtro e ordinamento all'origine dati e restituirà una pagina di risultati su richiesta. Quando, ad esempio, si avvia un'app che visualizza un controllo Raccolta contenente dati, inizialmente solo il primo set di record verrà trasferito al dispositivo. Mentre l'utente scorre, gli altri dati vengono scaricati dall'origine dati. In questo modo la fase di avvio dell'app sarà più rapida e sarà possibile accedere a set di dati di grandi dimensioni.

La delega tuttavia potrebbe non essere sempre possibile. Le origini dati sono diverse a seconda delle funzioni e degli operatori supportati con la delega. Se la delega completa di una formula non è possibile, l'ambiente di creazione contrassegnerà la parte che non può essere delegata con un avviso. Quando è possibile, prendere in considerazione la possibilità di modificare la formula per evitare le funzioni e gli operatori che non possono essere delegati. L'elenco di deleghe indica in dettaglio le origini dati e le operazioni che possono essere delegate.

Se la delega non è possibile, PowerApps scaricherà solo un piccolo set di record da usare in locale. Le funzioni di filtro e ordinamento verranno applicate a un set ridotto di record. Il contenuto disponibile nella raccolta potrebbe non essere completo e ciò potrebbe confondere gli utenti.

Per altre informazioni, vedere la panoramica della delega.

Sintassi

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

  • Table - Obbligatorio. La tabella in cui eseguire la ricerca.
  • Formula: obbligatorio. La formula in base alla quale viene valutato ogni record della tabella. La funzione restituisce tutti i record risultanti in true. È possibile fare riferimento alle colonne all'interno della tabella. Se si specificano più formule, i risultati di tutte le formule vengono combinati con la funzione And.

Search( Tabella, StringaRicerca, Colonna1 [, Colonna2, ... ] )

  • Table - Obbligatorio. La tabella in cui eseguire la ricerca.
  • StringaRicerca: obbligatorio. La stringa da cercare. Se è blank o una stringa vuota, vengono restituiti tutti i record.
  • Colonne: obbligatorio. I nomi delle colonne all'interno della tabella in cui eseguire la ricerca. Le colonne in cui eseguire la ricerca devono contenere testo. I nomi di colonna devono essere stringhe e racchiusi tra virgolette doppie. I nomi di colonna devono essere statici e non possono essere calcolati con una formula. Se la StringaRicerca viene trovata all'interno dei dati di una di queste colonne come corrispondenza parziale, verrà restituito il record completo.

LookUp( Tabella, Formula [, FormulaRiduzione ] )

  • Table - Obbligatorio. La tabella in cui eseguire la ricerca. Nell'interfaccia utente, la sintassi viene visualizzata come origine sopra la casella di funzione.
  • Formula - Obbligatorio. La formula in base alla quale viene valutato ogni record della tabella. La funzione restituisce il primo record risultante in true. È possibile fare riferimento alle colonne all'interno della tabella. Nell'interfaccia utente, la sintassi viene visualizzata come condizione sopra la casella di funzione.
  • FormulaRiduzione: facoltativo. Questa formula viene valutata sul record trovato, riducendo il record a un valore singolo. È possibile fare riferimento alle colonne all'interno della tabella. Se non si usa questo parametro, la funzione restituisce il record completo dalla tabella. Nell'interfaccia utente, la sintassi viene visualizzata come risultato sopra la casella di funzione.

Esempi

Negli esempi seguenti viene usata l'origine dati IceCream:

Formula Descrizione Risultato
Filter( IceCream, OnOrder > 0 ) Restituisce i record in cui OnOrder è maggiore di zero.
Filter( IceCream, Quantity + OnOrder > 225 ) Restituisce i record in cui la somma delle colonne Quantity e OnOrder è maggiore di 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Restituisce i record in cui viene visualizzata la parola "chocolate" nella colonna Flavor, senza distinzione tra lettere maiuscole o minuscole.
Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Restituisce i record in cui il valore Quantity è inferiore a 10 e il valore OnOrder è minore di 20. Poiché nessun record corrisponde a questi criteri, viene restituita una tabella vuota.
Search( IceCream, "choc", "Flavor" ) Restituisce i record in cui è inclusa la parola "choc" nella colonna Flavor, senza distinzione tra lettere maiuscole o minuscole.
Search( IceCream, "", "Flavor" ) Poiché il termine di ricerca è vuoto, vengono restituiti tutti i record.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Cerca un record con Flavor uguale a "Chocolate", di cui è presente uno. Per il primo record trovato, restituisce il valore Quantity di tale record. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Cerca un record con il valore Quantity maggiore di 100, di cui ce ne sono più di uno. Per il primo record trovato, ovvero Flavor "Vanilla", restituisce la somma delle colonne Quantity e OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Cerca un record con Flavor uguale a "Pistachio", di cui non è presente nessuno. Poiché non sono stati trovati record, la funzione Lookup restituisce blank. blank
LookUp( IceCream, Flavor = "Vanilla" ) Cerca un record con Flavor uguale a "Vanilla", di cui è presente uno. Poiché non è stata specificata alcuna formula di riduzione, viene restituito l'intero record. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Esperienza utente di ricerca

In molte app è possibile digitare uno o più caratteri in una casella di ricerca per filtrare un elenco di record in un set di dati molto grande. Mentre si digita, l'elenco visualizza solo i record che soddisfano i criteri di ricerca.

Gli esempi nella parte rimanente di questo argomento mostrano i risultati di ricerca in un elenco, denominato Customers, che contiene i dati seguenti:

Per creare questa origine dati come raccolta, creare un controllo Button e impostare la relativa proprietà OnSelect con questa formula:

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" } ) )

Come illustrato in questo esempio, è possibile visualizzare un elenco di record in un controllo di raccolta nella parte inferiore della schermata. Nella parte superiore della schermata è possibile aggiungere un controllo di input di testo denominato SearchInput, in modo che gli utenti possono specificare i record a cui sono interessati.

Mentre l'utente digita caratteri in SearchInput, i risultati della raccolta vengono filtrati automaticamente. In questo caso, la raccolta è configurata per visualizzare i record il cui nome cliente (non il nome della società) inizia con la sequenza di caratteri in SearchInput. Se l'utente digita co nella casella di ricerca, la raccolta visualizza i risultati seguenti:

Per applicare un filtro basato sulla colonna Name, impostare la proprietà Items del controllo della raccolta con una di queste formule:

Formula Descrizione Risultato
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Applica un filtro all'origine dati Customers per i record in cui viene visualizzata la stringa di ricerca all'inizio della colonna Name. Il test non fa distinzione tra lettere maiuscole e minuscole. Se l'utente digita co nella casella di ricerca, la raccolta visualizza Colleen Jones e Cole Miller. La raccolta non visualizza Mike Collins perché la colonna Name per tale record non inizia con la stringa di ricerca.
Filter( Customers, SearchInput.Text in Name ) Applica un filtro all'origine dati Customers per i record in cui viene visualizzata la stringa di ricerca in qualsiasi parte della colonna Name. Il test non fa distinzione tra lettere maiuscole e minuscole. Se l'utente digita co nella casella di ricerca, la raccolta visualizza Colleen Jones, Cole Miller, e Mike Collins perché la stringa di ricerca è inclusa in qualche parte della colonna Name per tutti questi record.
Search( Customers, SearchInput.Text, "Name" ) Simile all'uso dell'operatore in, la funzione Search cerca una corrispondenza in una parte qualsiasi all'interno della colonna Name di ogni record. Si noti che è necessario racchiudere il nome della colonna tra virgolette doppie.

È possibile espandere la ricerca per includere la colonna Company e la colonna Name:

Formula Descrizione Risultato
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Applica un filtro all'origine dati Customers per i record in cui la colonna Name o la colonna Company inizia con la stringa di ricerca (ad esempio, co). L'operatore || è true se la funzione StartsWith è anche true.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Applica un filtro all'origine dati Customers per i record in cui la colonna Name o la colonna Company contiene la stringa di ricerca (ad esempio, co) in qualsiasi parte all'interno della colonna.
Search( Customers, SearchInput.Text, "Name", "Company" ) Analogamente all'uso dell'operatore in, la funzione Search esegue la ricerca nell'origine dati Customers per trovare record in cui la colonna Name o la colonna Company contiene la stringa di ricerca (ad esempio, co) in qualsiasi parte all'interno della colonna. La funzione Search è più semplice da leggere e scrivere della funzione Filter se si vogliono specificare più colonne e più operatori in. Si noti che è necessario racchiudere i nomi delle colonne tra virgolette doppie.