Funzione ForAll

Completato

In precedenza si è appreso come usare le funzioni dedicate a un unico scopo per eseguire operazioni su una tabella. Queste funzioni sono ideali e assicurano prestazioni eccellenti, ma a volte serve una maggiore flessibilità o è necessario eseguire un'operazione non coperta da una di tali funzioni. In questi casi, è possibile usare la funzione ForAll.

La funzione ForAll valuta una formula per tutti i record di una tabella. La formula può calcolare un valore e/o eseguire azioni, ad esempio modificare i dati o usare una connessione.

I campi di record attualmente elaborati sono disponibili nella formula. È possibile farvi riferimento per nome, come per qualsiasi altro valore. È inoltre possibile fare riferimento alle proprietà di controllo e ad altri valori nell'app.

È ad esempio possibile usare ForAll(CustomerOrders, Office365.SendEmail(Email, "Grazie", "Sei un cliente eccezionale" e FirstName)) per inviare un messaggio e-mail separato a tutti gli indirizzi e-mail presenti nella tabella CustomerOrders. L'oggetto del messaggio e-mail sarà "Grazie" e il corpo "Sei un cliente eccezionale" seguito dal valore archiviato nel campo FirstName.

Questo esempio presenta due importanti differenze rispetto all'esempio Concat. In primo luogo, verrà inviato un messaggio e-mail per ogni record nella tabella CustomerOrders. Se quindi sono presenti 50 record, verranno inviati 50 diversi messaggi e-mail. Nell'esempio Concat è stato inviato un solo messaggio e-mail con tutti i 50 indirizzi e-mail nella riga A. In secondo luogo, questo messaggio e-mail fa anche riferimento al campo FirstName dalla tabella CustomerOrders. Quando si usa la funzione ForAll, tutti i campi di ogni record sono disponibili per l'uso.

Informazioni importanti per l'uso di ForAll

Con ForAll le potenzialità sono infinite, ma è bene tenere presente quanto segue prima di iniziare a creare la formula.

  • La formula può includere funzioni che eseguono operazioni, come la modifica dei record di un'origine dati con le funzioni Patch e Collect.

  • Non è possibile modificare la tabella che è l'oggetto della funzione ForAll. Questo include l'uso di Patch o Collect nella tabella.

  • La formula può chiamare i metodi sulle connessioni.

  • È possibile eseguire più azioni per ogni record usando ; come operatore.

  • Quando si scrive la formula, tenere presente che i record possono essere elaborati in qualsiasi ordine e, se possibile, in parallelo. È possibile elaborare il primo record della tabella dopo l'ultimo record. Assicurarsi di evitare l'ordinamento delle dipendenze. Per questo motivo, non è possibile usare le funzioni Set, UpdateContext, Clear e ClearCollect in una funzione ForAll perché potrebbero facilmente essere usate per contenere variabili che sarebbero soggette a questo effetto. È possibile usare Collect, ma l'ordine in cui i record vengono aggiunti non è definito.

  • ForAll non è delegabile, il che significa che potrebbe non esaminare tutti i tuoi record qualora venga usato con dati esterni. Il risultato ottenuto potrebbe non rappresentare la storia completa. Potrebbe apparire un avviso durante la scrittura della formula per ricordare questa limitazione e per suggerire di passare ad alternative delegabili quando possibile. ForAll funziona bene con le raccolte, ma occorre tenere presente che non è delegabile. Per ulteriori informazioni, consultare Panoramica della delega.

La funzione ForAll ha molte più regole della maggior parte delle funzioni di Power Apps. Inoltre, poiché non è possibile usare funzioni quali Set e UpdateContext, in alcuni casi è necessario trovare un altro modo per creare la formula. Uno dei motivi più comuni per voler usare Set con ForAll è la necessità di tenere traccia del numero di record modificati o di acquisire informazioni su tali record. È probabile che, usando Patch per aggiornare una raccolta in cui si tiene traccia degli stessi dati, si otterrà lo stesso risultato.

Per altre informazioni sull'utilizzo e sulle regole della funzione ForAll, vedere Funzione ForAll in Power Apps.