Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Microsoft Power Fx è il nuovo nome per il linguaggio delle formule delle app canvas. Questi articoli sono in corso man mano che Microsoft estrae il linguaggio dalle app canvas, lo integra con altri prodotti Microsoft Power Platform e lo rende disponibile come open source. Inizia con la Panoramica di Microsoft Power Fx per un'introduzione al linguaggio.
Informazioni su come le variabili Power Fx differiscono dalle variabili negli strumenti, ad esempio Visual Basic o JavaScript, e quando le formule sono una scelta migliore. Questo articolo illustra come scegliere variabili globali, variabili di contesto o raccolte per gestire i valori e lo stato dell'app.
In altri strumenti è possibile eseguire in modo esplicito un calcolo e archiviare il risultato in una variabile. Tuttavia, sia Power Fx che Excel ricalcolano automaticamente le formule quando i dati di input vengono modificati, pertanto in genere non è necessario creare e aggiornare variabili. Adottando questo approccio quando possibile, puoi creare, comprendere e gestire l'app molto più facilmente.
In alcuni casi, è necessario usare le variabili in Power Fx. Power Fx estende il modello di Excel aggiungendo formule di comportamento. Queste formule vengono eseguite quando, ad esempio, un utente seleziona un pulsante. All'interno di una formula di comportamento, è spesso utile impostare una variabile da usare in altre formule.
In generale è consigliabile evitare di usare le variabili. Ma a volte solo una variabile può attivare l'operazione che vuoi eseguire. Le variabili di tipo e vengono create in modo implicito quando vengono visualizzate nelle funzioni che impostano i valori.
Tradurre Excel in Power Fx
Excel
Per prima cosa, vediamo il funzionamento di Excel. Una cella può contenere un valore, come ad esempio un numero o una stringa o una formula che si basa sui valori contenuti in altre celle. Dopo che l'utente immette un valore diverso in una cella, Excel ricalcola automaticamente tutte le formule che dipendono dal nuovo valore. Non devi eseguire alcuna attività di programmazione per abilitare questo comportamento.
Nel seguente esempio, la cella A3 è impostata sulla formula A1+A2. Se A1 o A2 cambia, A3 viene ricalcolata automaticamente per riflettere la modifica. Questo comportamento non richiede codifica al di fuori della formula stessa.
Excel non contiene variabili. Il valore di una cella che contiene una formula cambia a seconda del relativo input, ma non è possibile memorizzare il risultato di una formula e archiviarlo in una cella o in qualsiasi altro elemento. Se si modifica il valore di una cella, l'intero foglio di calcolo potrebbe cambiare e i valori calcolati in precedenza andranno persi. Un utente di Excel può copiare e incollare le celle, ma ciò si svolge sotto il controllo manuale dell'utente e non può verificarsi con le formule.
Power Fx
La logica creata in Power Fx si comporta in modo molto simile a Excel. Anziché aggiornare le celle, puoi aggiungere controlli ovunque vuoi in una schermata e denominarli per usarli nelle formule.
Ad esempio, in Power Apps, puoi replicare il comportamento di Excel in un'app aggiungendo un comando etichetta denominato Label1 e due comandi input di testo denominati TextInput1 e TextInput2. Se quindi si imposta la proprietà Text di Label1 su TextInput1.Text + TextInput2.Text, viene sempre visualizzata la somma di tutti i numeri presenti in TextInput1 e TextInput2 automaticamente.
Nota che il controllo Label1 è selezionato, quindi la formula Text viene visualizzata nella barra delle formule nella parte superiore dello schermo. Qui si trova la formula TextInput1.Text + TextInput2.Text. Questa formula crea una dipendenza tra questi controlli,così come si creano dipendenze tra le celle di una cartella di lavoro di Excel. Modifichiamo il valore di TextInput1:
La formula per Label1 viene ricalcolata automaticamente, con il nuovo valore.
In Power Fx puoi usare le formule per determinare non solo il valore principale di un comando, ma anche le proprietà, come ad esempio la formattazione. Nell'esempio seguente una formula per la proprietà Color dell'etichetta mostra automaticamente i valori negativi in rosso. La funzione If dovrebbe risultare familiare dall'uso di Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
Puoi usare le formule per un'ampia gamma di scenari:
- Quando usi il GPS del tuo dispositivo, un controllo mappa può visualizzare la posizione corrente con una formula che usa Location.Latitude e Location.Longitude. Quando ti sposti la mappa tiene traccia automaticamente della tua posizione.
- Altri utenti possono aggiornare le origini dati. Ad esempio, altri membri del tuo team potrebbero aggiornare le voci di un elenco SharePoint. Quando si aggiorna un'origine dati, le formule dipendenti vengono ricalcolate automaticamente in modo da riflettere i dati aggiornati. Per altre informazioni, è possibile impostare la proprietà Items di una raccolta sulla formula Filter( SharePointList ), che visualizza automaticamente il set di record appena filtrato.
Vantaggi delle formule Power Fx
L'uso delle formule per creare app offre molti vantaggi:
- Se sai usare Excel, sai usare Power Fx. Il modello e il linguaggio delle formule sono gli stessi.
- Se si usano altri strumenti di programmazione, valutare la quantità di codice necessario per eseguire questi esempi. In Visual Basic sarebbe stato necessario scrivere un gestore eventi per l'evento di modifica per ogni controllo di input di testo. Il codice per eseguire il calcolo in ognuno di questi gestori eventi è ridondante e potrebbe non essere sincronizzato oppure è necessario scrivere una subroutine comune. In Power Fx è possibile eseguire tutte queste operazioni con una singola formula a riga singola.
- Per capire da dove proviene il testo di Label1, si sa esattamente da dove cercare: la formula nella proprietà Text . Non c'è altro modo per agire sul testo di questo controllo. In uno strumento di programmazione tradizionale qualsiasi gestore eventi o subroutine potrebbe modificare il valore dell'etichetta, da qualsiasi punto del programma. Questo approccio può rendere difficile rilevare quando e dove è stata modificata una variabile.
- Se l'utente modifica un dispositivo di scorrimento e poi cambia idea, può far tornare il dispositivo di scorrimento al valore originale. È come se non fosse mai cambiato nulla: l'app mostra gli stessi valori di controllo usati in precedenza.It's as if nothing changed: the app shows the same control values as it did before. Non vi sono sperimentazioni o congetture possibili, così come non ve ne sono in Excel.
In generale, se è possibile ottenere un effetto usando una formula, si è meglio. Sfrutta il motore di formule in Power Fx è l'approccio più utile.
Sapere quando usare le variabili
Modifichiamo un semplice addizionatore in modo che funzioni come una vecchia calcolatrice, con un totale parziale. Se si seleziona un pulsante Aggiungi , aggiungere un numero al totale in esecuzione. Se si seleziona un pulsante Cancella , si reimposta il totale in esecuzione su zero.
| Schermo | Descrizione |
|---|---|
|
All'avvio dell'app, il totale parziale è 0. Il punto rosso rappresenta il dito dell'utente nella casella di input di testo, in cui l'utente immette 77. |
|
L'utente seleziona il pulsante Aggiungi. |
|
77 viene aggiunto al totale parziale. L'utente seleziona di nuovo il pulsante Aggiungi. |
|
77 viene nuovamente aggiunto al totale parziale, con il risultato di 154. L'utente seleziona il pulsante Cancella. |
|
Il totale parziale viene reimpostato a 0. |
La calcolatrice usa una cosa che non esiste in Excel: un pulsante. In questa app non puoi usare solo le formule per calcolare il totale parziale perché il suo valore dipende da una serie di azioni eseguite dall'utente. È invece necessario registrare e aggiornare manualmente il totale in esecuzione. La maggior parte degli strumenti di programmazione archivia queste informazioni in una variabile.
Talvolta è necessaria una variabile perché l'app si comporti nel modo voluto. Tuttavia, è bene tenere presente alcune precisazioni:
- Devi aggiornare manualmente il totale parziale. Il ricalcolo automatico non è utilizzabile.
- Non è possibile calcolare il totale in esecuzione in base ai valori di altri controlli. Dipende da quante volte l'utente ha selezionato il pulsante Aggiungi e dal valore del controllo Input di testo presente ogni volta. L'utente ha immesso 77 e ha selezionato Aggiungi due volte o ha specificato 24 e 130 per ognuna delle addizioni? Non è possibile indicare la differenza dopo che il totale raggiunge 154.
- Le modifiche al totale possono provenire da percorsi diversi. In questo esempio sia il pulsante Aggiungi che Cancella possono aggiornare il totale. Se l'app non si comporta come ti aspetti, qual è il pulsante che crea il problema?
Usare una variabile globale
Per creare il computer di aggiunta, è necessaria una variabile per contenere il totale in esecuzione. Le variabili più semplici da utilizzare in Power Fx sono le variabili globali.
Come funzionano le variabili globali:
- Usare la funzione Set per impostare il valore della variabile globale. Set( MyVar, 1 ) imposta la variabile globale MyVar su un valore pari a 1.
- Usare la variabile globale facendo riferimento al nome usato con la funzione Set . In questo caso, MyVar restituisce 1.
- Le variabili globali possono contenere qualsiasi valore, incluse stringhe, numeri, record, e tabelle.
Ricompila ora la calcolatrice usata in precedenza con una variabile globale:
Aggiungi un controllo Input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.
Imposta la proprietà Text di Button1 su "Aggiungi" e imposta la proprietà Text di Button2 su "Cancella".
Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostane la proprietà OnSelect su questa formula:
Set( RunningTotal, RunningTotal + TextInput1.Text )
La semplice esistenza di questa formula definisce RunningTotal come variabile globale che contiene un numero a causa dell'operatore +. Puoi fare riferimento a RunningTotal ovunque nell'app. Ogni volta che l'utente apre questa app, RunningTotal ha il valore iniziale vuoto.
La prima volta che un utente seleziona il pulsante Aggiungi e viene eseguita la funzione Set, RunningTotal viene impostato sul valore RunningTotal + TextInput1.
Per impostare il totale parziale su 0 ogni volta che l'utente seleziona il pulsante Cancella, impostane la proprietà OnSelect su questa formula:
Set( RunningTotal, 0 )
Aggiungi un comando Etichetta e impostane la proprietà Text su RunningTotal.
Questa formula ricalcola automaticamente e mostra all'utente il valore di RunningTotal quando cambia in base ai pulsanti selezionati dall'utente.
Visualizzare in anteprima l'app e si ha il computer da aggiungere come descritto in precedenza. Immetti un numero nella casella di testo e premi il pulsante Aggiungi più volte. Quando si è pronti, tornare all'esperienza di creazione usando il tasto ESC .
Per vedere il valore della variabile globale, seleziona il menu File e quindi Variabili nel riquadro a sinistra.
Seleziona la variabile per vedere tutte le posizioni in cui è definita e usata.
Tipi di variabili
Power Fx ha due tipi di variabili:
| Tipo di variabile | Ambito | Descrizione | Funzioni stabilite |
|---|---|---|---|
| Variabili globali | App | La più semplice da usare. Contiene un numero, una stringa di testo, un valore booleano, un record, una tabella e altro ancora. È possibile farvi riferimento da qualsiasi punto dell'app. | Set |
| Raccolte | App | Contiene una tabella a cui è possibile fare riferimento ovunque nell'app. È possibile modificare il contenuto della tabella anziché impostarlo nel suo complesso. È possibile salvarlo nel dispositivo locale per usarlo in un secondo momento. |
Collect ClearCollect |
Quando si usa Power Apps, viene visualizzato un terzo tipo di variabile:
| Tipo di variabile | Ambito | Descrizione | Funzioni stabilite |
|---|---|---|---|
| Variabili del contesto | Schermo | Eccellente per passare valori a una schermata, proprio come i parametri a una procedura in altri linguaggi. È possibile farvi riferimento da una sola schermata. |
UpdateContext Navigate |
Creare e rimuovere le variabili
Tutte le variabili vengono create in modo implicito quando vengono visualizzate in una funzione Set, UpdateContext, Navigate, Collect o ClearCollect . Per dichiarare una variabile e il relativo tipo, è sufficiente includerla in una di queste funzioni in qualsiasi punto dell'app. Nessuna di queste funzioni crea variabili, i valori vengono inseriti nelle variabili. Non dichiari mai le variabili in modo esplicito come faresti in un altro strumento di programmazione e tutta la digitazione è implicita dall'uso.
Ad esempio, potresti avere un controllo Pulsante con una formula OnSelect pari a Set( X, 1 ). Questa formula stabilisce X come variabile con un tipo di numero. Puoi usare X nelle formule come numero e quella variabile ha il valore vuoto dopo aver aperto l'app ma prima di Seleziona il pulsante. Quando selezioni il pulsante, assegni a X il valore 1.
Se si aggiunge un altro pulsante e si imposta la relativa proprietà OnSelectsu Set( X, "Hello", ), si verifica un errore perché il tipo (stringa di testo) non corrisponde al tipo nel set precedente (numero). Tutte le definizioni implicite della variabile devono corrispondere per tipo. Anche in questo caso, tutto questo è successo perché hai menzionato X nelle formule, non perché una di queste formule è stata effettivamente eseguita.
Rimuovi una variabile rimuovendo tutte le funzioni Set, UpdateContext, Navigate, Collect o ClearCollect che implicitamente stabiliscono la variabile. Senza queste funzioni, la variabile non esiste. È inoltre necessario rimuovere tutti i riferimenti alla variabile perché generano un errore.
Durata della variabile e valore iniziale
L'app contiene tutte le variabili in memoria durante l'esecuzione. Dopo aver chiuso l'app, i valori contenuti nelle variabili vengono persi.
Puoi memorizzare il contenuto di una variabile in un'origine dati usando le funzioni Patch o Collect. Puoi inoltre archiviare i valori nelle raccolte sul dispositivo locale utilizzando la funzione SaveData.
Quando l'utente apre l'app, tutte le variabili hanno il valore iniziale vuoto.
Leggere le variabili
Usare il nome della variabile per leggerne il valore. Ad esempio, puoi definire una variabile con questa formula:
Set( Radius, 12 )
È quindi possibile usare radius ovunque sia possibile usare un numero e sostituire con 12:
Pi() * Power( Radius, 2 )
Se assegni a una variabile di contesto lo stesso nome di una variabile globale o di una raccolta, la variabile di contesto ha la precedenza. Tuttavia puoi comunque fare riferimento alla variabile globale o alla raccolta se usi l'operatore di disambiguazione[@Radius].
Usare una variabile di contesto (solo Power Apps)
Ecco come creare il computer di aggiunta usando una variabile di contesto anziché una variabile globale.
Come funzionano le variabili di contesto:
- Le variabili di contesto vengono stabilite e impostate in modo implicito usando la funzione UpdateContext o Navigate. All'avvio dell'app, tutte le variabili di contesto hanno il valore iniziale vuoto.
- Le variabili di contesto vengono aggiornate con i record. In altri strumenti di programmazione usi generalmente "=" per l'assegnazione, come in "x = 1". Per le variabili di contesto usare invece { x: 1 } instead. Quando usi una variabile di contesto, utilizza il suo nome direttamente senza la sintassi del record.
- Puoi anche impostare una variabile di contesto quando usi la funzione Naviga per visualizzare una schermata. Se consideri una schermata come un tipo di procedura o di subroutine, questo approccio è simile al passaggio dei parametri in altri strumenti di programmazione.
- Ad eccezione di Naviga, le variabili di contesto sono limitate al contesto di una singola schermata, da cui prendono il nome. Non è possibile usarle o impostarle al di fuori di tale contesto.
- Le variabili di contesto possono contenere qualsiasi valore, incluse stringhe, numeri, record, e tabelle.
Ricompila ora la calcolatrice usata in precedenza tramite una variabile di contesto:
Aggiungi un controllo Input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.
Imposta la proprietà Text di Button1 su "Aggiungi" e imposta la proprietà Text di Button2 su "Cancella".
Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostane la proprietà OnSelect su questa formula:
UpdateContext( { RunningTotal: RunningTotal + TextInput1.Text } )
La semplice esistenza di questa formula definisce RunningTotal come variabile di contesto che contiene un numero a causa dell'operatore +. Puoi fare riferimento a RunningTotal ovunque nella schermata. Ogni volta che l'utente apre questa app, RunningTotal ha il valore iniziale vuoto.
La prima volta che l'utente seleziona il pulsante Aggiungi e viene eseguita la funzione UpdateContext, RunningTotal viene impostato sul valore RunningTotal + TextInput1.
Per impostare il totale parziale su 0 ogni volta che l'utente seleziona il pulsante Cancella, impostane la proprietà OnSelect su questa formula:
UpdateContext( { RunningTotal: 0 } )
Ancora una volta, UpdateContext viene usata con la formula UpdateContext( { RunningTotal: 0 } ).
Aggiungi un comando Etichetta e impostane la proprietà Text su RunningTotal.
Questa formula ricalcola automaticamente e mostra all'utente il valore di RunningTotal quando cambia in base ai pulsanti selezionati dall'utente.
Visualizzare l'anteprima dell'app e aggiungere il computer come descritto in precedenza. Immetti un numero nella casella di testo e premi il pulsante Aggiungi più volte. Quando si è pronti, tornare all'esperienza di creazione usando il tasto ESC .
Puoi impostare il valore di una variabile di contesto durante l'esplorazione di una schermata. Questa tecnica è utile per passare "context" o "parameters" da una schermata a un'altra. Per dimostrare questa tecnica, inserisci una schermata, inserisci un pulsante e impostane la proprietà OnSelect su questa formula:
Navigate( Screen1, None, { RunningTotal: -1000 } )
Tenere premuto ALT mentre si seleziona questo pulsante per visualizzare Screen1 e impostare la variabile di contesto RunningTotal su -1000.
Per vedere il valore della variabile di contesto, seleziona il menu File e quindi Variabili nel riquadro a sinistra.
Selezionare la variabile di contesto per vedere dove viene definita e usata.
Usare una raccolta
Infine, esaminiamo la creazione della calcolatrice con una raccolta. Poiché una raccolta contiene una tabella che è possibile modificare facilmente, questa macchina aggiungendo mantiene un "nastro di carta" di ogni valore durante l'immissione.
Come funzionano le raccolte:
- Usare la funzione ClearCollect per creare e impostare raccolte. È invece possibile usare la funzione Collect , ma richiede in modo efficace un'altra variabile anziché sostituire quella precedente.
- Una raccolta è una sorta di origine dati e, quindi, una tabella. Per accedere a un singolo valore in una raccolta, usa la funzione First ed estrai un campo dal record risultante. Se si usa un singolo valore con ClearCollect, questo valore è il campo Value , come nell'esempio seguente:
First(VariableName).Value
Ricrea ora la calcolatrice tramite una raccolta:
Aggiungi un controllo di input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.
Imposta la proprietà Text di Button1 su "Aggiungi" e imposta la proprietà Text di Button2 su "Cancella".
Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostane la proprietà OnSelect su questa formula:
Collect( PaperTape, TextInput1.Text )
La semplice esistenza di questa formula stabilisce PaperTape come una raccolta che contiene una tabella di stringhe di testo a colonna singola. Puoi fare riferimento a PaperTape ovunque nell'app. Ogni volta che un utente apre questa app, PaperTape è una tabella vuota.
Quando questa formula viene eseguita, aggiunge il nuovo valore alla fine della raccolta. Poiché si aggiunge un singolo valore, Collect lo inserisce automaticamente in una tabella a colonna singola e il nome della colonna è Value, che verrà usato in un secondo momento.
Per eliminare il nastro perforato quando l'utente seleziona il pulsante Cancella, impostane la proprietà OnSelect su questa formula:
Clear( PaperTape )
Per visualizzare il totale parziale, aggiungi un'etichetta e impostane la proprietà Text sulla formula seguente:
Sum( PaperTape, Value )
Per eseguire la calcolatrice, premi F5 per visualizzare l'anteprima, immetti i numeri nel controllo Input di testo e seleziona i pulsanti.
Per tornare all'area di lavoro predefinita, premere ESC.
Per visualizzare il nastro perforato, aggiungi un controllo Tabella dati e impostane la proprietà Items su questa formula seguente:
PaperTape
Nel riquadro di destra seleziona Modifica campi quindi Aggiungi campo, seleziona la colonna Valore e quindi seleziona Aggiungi per mostrarlo.
Per visualizzare i valori nella raccolta, seleziona Raccolte dal menu File.
Per archiviare e recuperare la raccolta, aggiungi due controlli pulsanti supplementari e impostane la proprietà Text su Load e Save. Imposta la proprietà OnSelect del pulsante Load su questa formula:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
È necessario prima cancellare la raccolta perché LoadData aggiungerà i valori archiviati alla fine della raccolta.
Imposta la proprietà OnSelect del pulsante Save sulla formula seguente:
SalvaDati( NastroCartaceo, "NastroCartaceoMemorizzato" )
Visualizzare nuovamente l'anteprima premendo F5 , immettere i numeri nel controllo di input di testo e selezionare i pulsanti. Seleziona il pulsante Salva. Chiudi e ricarica l'app e seleziona il pulsante Load per ricaricare la raccolta.