Ordina una tabella.

Descrizione

La funzione Sort ordina una tabella in base a una formula.

La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa. La formula deve avere come risultato un numero, una stringa o un valore booleano. Non può avere come risultato una tabella o un record.

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.

Per ordinare prima in base a una colonna e quindi in base a un'altra colonna, incorporare una formula Sort all'interno di un'altra. Ad esempio, per ordinare una tabella Contatti prima in base alla colonna Cognome e quindi in base alla colonna Nome, è possibile usare la formula seguente: Sort( Sort( Contatti, Cognome ), Nome )

Per ordinare una tabella in base a una o più colonne è possibile usare anche la funzione SortByColumns.

L'elenco di parametri per la funzione SortByColumns fornisce i nomi delle colonne in base a cui eseguire l'ordinamento, oltre alla direzione di ordinamento per colonna. L'ordinamento viene eseguito secondo l'ordine dei parametri (prima in base alla prima colonna, poi in base alla seconda e così via). I nomi delle colonne vengono specificati sotto forma di stringa e, se vengono inclusi direttamente nell'elenco dei parametri, devono essere indicati tra virgolette doppie. Ad esempio, SortByColumns (CustomerTable, "Cognome").

È possibile combinare la funzione SortByColumns con un controllo di tipo elenco a discesa o casella di riepilogo per consentire agli utenti di selezionare la colonna in base a cui eseguire l'ordinamento.

Oltre all'ordinamento crescente o decrescente, la funzione SortByColumns può eseguire anche l'ordinamento in base a una tabella di valori di una singola colonna. Ad esempio, è possibile ordinare i record in base al nome dei giorni della settimana specificando [ "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica" ] come parametri di ordinamento. Verranno visualizzati per primi i record contenenti Lunedì, seguiti da quelli con Martedì e così via. I record individuati non inclusi nella tabella di ordinamento vengono inseriti alla fine dell'elenco.

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 Sort e SortByColumn non modificano una tabella, ma accettano una tabella come argomento e restituiscono una nuova tabella ordinata. 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

Sort( Table, Formula [, SortOrder ] )

  • Table - Obbligatorio. Tabella da ordinare.
  • Formula - Obbligatorio. La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa. È possibile fare riferimento alle colonne all'interno della tabella.
  • SortOrder - Facoltativo. Specificare SortOrder.Descending per ordinare la tabella in ordine decrescente. SortOrder.Ascending è il valore predefinito.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table - Obbligatorio. Tabella da ordinare.
  • ColumnName(s) - Obbligatorio. I nomi delle colonne in base a cui eseguire l'ordinamento, indicati in forma di stringa.
  • SortOrder(s) - Facoltativo. SortOrder.Ascending o SortOrder.Descending. SortOrder.Ascending è il valore predefinito. Se vengono forniti più valori ColumnName(s), tutte le colonne tranne l'ultima devono includere un parametro SortOrder.

    Nota: per origini dati SharePoint ed Excel che contengono nomi di colonna con spazi, specificare ogni spazio come "_x0020_". Ad esempio, specificare "Nome colonna" come "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - Obbligatorio. Tabella da ordinare.
  • ColumnName - Obbligatorio. Il nome della colonna in base a cui eseguire l'ordinamento, indicato in forma di stringa.
  • SortOrderTable - Obbligatorio. Tabella di valori di una singola colonna in base a cui eseguire l'ordinamento.

    Nota: per origini dati SharePoint ed Excel che contengono nomi di colonna con spazi, specificare ogni spazio come "_x0020_". Ad esempio, specificare "Nome colonna" come "Column_x0020_Name".

Esempi

Per gli esempi riportati di seguito verrà usata l'origine dati IceCream, contenente i dati della tabella seguente:

Formula Descrizione Risultato
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Ordina IceCream in base alla colonna Flavor. La colonna Flavor contiene stringhe, motivo per cui la tabella viene ordinata alfabeticamente. Per impostazione predefinita, l'ordinamento è crescente.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Ordina IceCream in base alla colonna Quantity. La colonna Quantity contiene numeri, motivo per cui la tabella viene ordinata numericamente. Per impostazione predefinita, l'ordinamento è crescente.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordina IceCream in base alla colonna Quantity. La colonna Quantity contiene numeri, motivo per cui viene eseguito un ordinamento numerico. È stato specificato l'ordinamento decrescente.
Sort( IceCream, Quantity + OnOrder ) Ordina IceCream in base alla somma delle colonne Quantity e OnOrder per ciascun singolo record. La somma è un numero, motivo per cui la tabella viene ordinata numericamente. Per impostazione predefinita, l'ordinamento è crescente. Poiché si sta eseguendo l'ordinamento in base a una formula e non in base a valori di colonna non elaborati, non esiste un'alternativa equivalente all'uso di SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Ordina IceCream prima in base alla colonna OnOrder e quindi in base alla colonna Quantity. Si noti che nel primo ordinamento eseguito in base alla colonna OnOrder il gusto "Pistachio" viene prima di "Vanilla". I due record vengono quindi inseriti nella posizione appropriata in base alla colonna Quantity.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordina IceCream in base alla colonna Flavor sulla base di una singola tabella di colonne contenente "Pistachio" e "Strawberry". I record con Flavor "Pistachio" verranno visualizzati per primi nell'elenco dei risultati, seguiti da quelli contenenti "Strawberry". I valori della tabella Flavor che non corrispondono, ad esempio "Vanilla", verranno visualizzati dopo gli elementi che corrispondono.

Procedura dettagliata

Per eseguire questi esempi, creare l'origine dati IceCream sotto forma di raccolta:

  1. Aggiungere un pulsante e impostarne la proprietà OnSelect su questa formula:
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )

  2. Visualizzare in anteprima l'app, selezionare il pulsante e quindi premere ESC per tornare all'area di lavoro predefinita.

  3. Selezionare Collections (Raccolte) dal menu File per visualizzare la raccolta appena creata, quindi premere ESC per tornare all'area di lavoro predefinita.

Sort

  1. Aggiungere un altro pulsante e impostarne la proprietà OnSelect sulla formula seguente:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La formula precedente crea una seconda raccolta, denominata SortByFlavor, che contiene gli stessi dati della raccolta IceCream. La nuova raccolta, tuttavia, riporta i dati ordinati alfabeticamente in ordine crescente in base alla colonna Flavor.

  2. Premere F5, selezionare il nuovo pulsante e quindi premere ESC.

  3. Selezionare Collections (Raccolte) dal menu File per visualizzare entrambe le raccolte e quindi premere ESC per tornare all'area di lavoro predefinita.

  4. Ripetere gli ultimi tre passaggi, ma modificare il nome della raccolta che si vuole creare e sostituire la formula Sort con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano Sort.

SortByColumns

  1. Aggiungere un altro pulsante e impostarne la proprietà OnSelect sulla formula seguente:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    La formula precedente crea una terza raccolta, denominata SortByQuantity, che contiene gli stessi dati della raccolta IceCream. La nuova raccolta, tuttavia, contiene i dati ordinati numericamente in ordine crescente in base alla colonna Quantity e quindi in ordine decrescente in base alla colonna Flavor.

  2. Premere F5, selezionare il nuovo pulsante e quindi premere ESC.

  3. Selezionare Collections (Raccolte) dal menu File per visualizzare tutte e tre le raccolte e quindi premere ESC per tornare all'area di lavoro predefinita.

  4. Ripetere gli ultimi tre passaggi, ma modificare il nome della raccolta che si vuole creare e sostituire la formula SortByColumns con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano SortByColumns.