Funzioni If e Switch
Si applica a: App Canvas Dataverse Colonne formula Flussi Desktop App basate su modello Power Pages Power Platform CLI
Determina se qualsiasi condizione in un set è true (If) o il risultato di una formula corrisponde a un qualsiasi valore in un set (Switch) e restituisce un risultato o esegue un'azione.
Descrizione
La funzione If verifica una o più condizioni finché non viene trovato un risultato true. Se viene trovato un risultato di questo tipo, viene restituito un valore corrispondente. In caso contrario viene restituito un valore predefinito. In entrambi i casi, il valore restituito potrebbe essere una stringa da visualizzare, una formula da valutare o un altro tipo di risultato.
La funzione Switch valuta una formula e determina se il risultato corrisponde a un qualsiasi valore in una sequenza specificata. Se viene trovato un risultato, viene restituito un valore corrispondente. In caso contrario, viene restituito un valore predefinito. In entrambi i casi, il valore restituito potrebbe essere una stringa da visualizzare, una formula da valutare o un altro tipo di risultato.
If e Switch sono molto simili, ma dovresti usare la funzione migliore per la tua situazione:
- Usare If per valutare una sola condizione. La sintassi più comune per questa funzione è If( Condition, ThenResult, DefaultResult ), che fornisce il modello comune "if … then… else ..." criterio visto in altri strumenti di programmazione.
- Usare If per valutare più condizioni non correlate. A differenza di Microsoft Excel, in Power Apps è possibile specificare più condizioni senza la necessità di annidare formule If.
- Usare Switch per valutare una singola condizione rispetto a più corrispondenze possibili. È possibile anche usare If in questo caso, ma è necessario ripetere la formula per ogni possibile corrispondenza.
È possibile usare entrambe le funzioni nelle formule di comportamento per creare un ramo tra due o più azioni. Solo un ramo attiverà un'azione. Le condizioni e le corrispondenze vengono valutate nell'ordine e si interrompono se una condizione è true o se viene trovata una corrispondenza.
Blank viene restituito se nessuna condizione è vera, non vengono trovate corrispondenze e non si specifica un risultato predefinito.
Sintassi
Se( Condizione, AlloraRisultato [, RisultatoPredefinito ] )
Se( Condizione1, AlloraRisultato1 [, Condizione2, AlloraRisultato2, ... [, RisultatoPredefinito ] ] )
- Condizioni - Obbligatorio. Formula o formule da verificare per true. Queste formule solitamente contengono operatori di confronto, ad esempio <, > e =, e verificano funzioni quali IsBlank e IsEmpty.
- ThenResults - Obbligatorio. Il valore corrispondente da restituire per una condizione che restituisce true.
- DefaultResult - Facoltativo. Il valore da restituire se nessuna condizione viene valutata come true. Se non si specifica questo argomento, viene restituito blank.
Cambia( Formula, Partita1, Risultato1 [, Partita2, Risultato2, ... [, RisultatoPredefinito ] ] )
- Formula - Obbligatorio. Formula da valutare per ogni corrispondenza. Questa formula viene valutata una sola volta.
- Corrispondenze - Obbligatorio. Valori da confrontare con il risultato di Formula. Se viene trovata una corrispondenza esatta, viene restituito il valore Result corrispondente.
- Risultati - Obbligatorio. Il valore corrispondente da restituire quando viene trovata una corrispondenza esatta.
- DefaultResult - Facoltativo. Se non viene trovata una corrispondenza esatta, viene restituito questo valore. Se non si specifica questo argomento, viene restituito blank.
Esempi
Valori nelle formule
Negli esempi seguenti un controllo Slider denominato Slider1 ha il valore 25.
Formula | Descrizione | Result |
---|---|---|
Se( Slider1.Value = 25, "Result1" ) | La condizione è true, quindi viene restituito il risultato corrispondente. | "Result1" |
Se( Slider1.Value = 25, "Risultato1", "Risultato2") | La condizione è true, quindi viene restituito il risultato corrispondente. | "Result1" |
Se( Slider1.Value > 1000, "Result1" ) | La condizione è false e DefaultResult non è stato specificato. | vuoto |
Se( Slider1.Value > 1000, "Risultato1", "Risultato2" ) | La condizione è false, DefaultResult è stato specificato e restituito. | "Result2" |
Se( Slider1.Value = 25, "Risultato1", Slider1.Value > 0, "Risultato2" ) | La prima condizione è true, quindi viene restituito il risultato corrispondente. Anche la seconda condizione è true, ma non viene valutata perché viene visualizzata in un secondo momento nell'elenco di argomenti rispetto a una condizione che restituisce true. | "Result1" |
Se( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | La prima condizione è false perché il dispositivo di scorrimento non è blank. La seconda condizione è true perché il valore del dispositivo di scorrimento è un numero e quindi viene restituito il risultato corrispondente. | "Result2" |
Se( Slider1.Value > 1000, "Risultato1", Slider1.Value > 50, "Risultato2", "Risultato3") | Sia la prima sia la seconda condizione sono false, è stato specificato e restituito DefaultResult. | "Result3" |
Switch( Slider1.Value, 25, "Result1" ) | Il valore del dispositivo di scorrimento corrisponde al primo valore da controllare e viene restituito il risultato corrispondente. | "Result1" |
Switch( Slider1.Value, 20, "Risultato1", 25, "Risultato2", 30, "Risultato3" ) | Il valore del dispositivo di scorrimento corrisponde al secondo valore da controllare e viene restituito il risultato corrispondente. | "Result2" |
Switch( Slider1.Value, 20, "Risultato1", 10, "Risultato2", 0, "Risultato3", "RisultatoPredefinito" ) | Il valore del dispositivo di scorrimento non corrisponde a nessun valore da controllare. DefaultResult è stato specificato e quindi viene restituito. | "DefaultResult" |
Creazione di rami nelle formule di comportamento
In questi esempi un controllo Text input denominato FirstName contiene il valore "John".
Formula | Descrizione | Risultato |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | La condizione è true, quindi viene eseguita la funzione Navigate. È possibile usare la funzione IsBlank per verificare se è stato specificato un campo modulo obbligatorio. Se il valore FirstName fosse blank, questa formula non avrebbe alcun effetto. | VERO La visualizzazione viene modificata a Screen1. |
Se( IsBlank( Nome.Testo ), Navigate( Schermo1, ScreenTransition.None ), Indietro() ) | Senza l'operatore !, la condizione è false, quindi la funzione Navigate non viene eseguita. La funzione Back è stata specificata come DefaultResult, quindi viene eseguita. | VERO La visualizzazione torna alla schermata visualizzata in precedenza. |
Switch( Nome.Testo, "Carlos", Naviga( Schermo1, ScreenTransition.Nessuno ), "Kirstin", Naviga( Schermo2, ScreenTransition.Nessuno ), "John", Naviga( Schermo3, ScreenTransition.Nessuno ) ) | Il valore di FirstName.Text viene confrontato con "Carlos", "Kirstin" e "John" in questo ordine. Viene trovata una corrispondenza con "John", quindi l'app passa a Screen3. | VERO La visualizzazione viene modificata a Screen3. |
Procedura dettagliata
Aggiungere un controllo Text input e denominarlo Text1 se non ha tale nome per impostazione predefinita.
In Text1 digitare 30.
Aggiungi un controllo Label e impostane la proprietà Text sulla formula seguente:
If( Value(Text1.Text) < 20, "Ordinane MOLTI altri!", Value(Text1.Text) < 40, "Ordinane altri!", Text1.Text )Il controllo Label mostra Ordina di più! poiché il valore di Text1 è maggiore di 20 ma minore di 40.
In Text1 digitare 15.
Il controllo Label mostra Ordina MOLTO di più! poiché il valore di Text1 è minore di 20.
In Text1 digitare 50.
Il controllo Label mostra il valore digitato perché è superiore a 40.