Funzioni If e Switch

Si applica a: app canvas colonne di formula Dataverse flussi desktop app basate su modello 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.

Le funzioni If e Switch sono molto simili, ma è opportuno usare la funzione più adatta alla situazione specifica:

  • 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 è true, non vengono trovate corrispondenze e non si specifica un risultato predefinito.

Sintassi

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s): 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.
  • ThenResult(s): 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.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula: obbligatorio. Formula da valutare per ogni corrispondenza. Questa formula viene valutata una sola volta.
  • Match(s): obbligatorio. Valori da confrontare con il risultato di Formula. Se viene trovata una corrispondenza esatta, viene restituito il valore Result corrispondente.
  • Result(s): 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
If( Slider1.Value = 25, "Result1" ) La condizione è true, quindi viene restituito il risultato corrispondente. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) La condizione è true, quindi viene restituito il risultato corrispondente. "Result1"
If( Slider1.Value > 1000, "Result1" ) La condizione è false e DefaultResult non è stato specificato. blank
If( Slider1.Value > 1000, "Result1", "Result2" ) La condizione è false, DefaultResult è stato specificato e restituito. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) 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"
If( 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"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") 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, "Result1", 25, "Result2", 30, "Result3" ) Il valore del dispositivo di scorrimento corrisponde al secondo valore da controllare e viene restituito il risultato corrispondente. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) 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. true

La visualizzazione viene modificata a Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Senza l'operatore !, la condizione è false, quindi la funzione Navigate non viene eseguita. La funzione Back è stata specificata come DefaultResult, quindi viene eseguita. true

La visualizzazione torna alla schermata visualizzata in precedenza.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) 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. true

La visualizzazione viene modificata a Screen3.

Procedura dettagliata

  1. Aggiungere un controllo Text input e denominarlo Text1 se non ha tale nome per impostazione predefinita.

  2. In Text1 digitare 30.

  3. Aggiungi un controllo Label e impostane la proprietà Text sulla formula seguente:
    If( Value(Text1.Text) < 20, "Ordina MOLTO di più!", Value(Text1.Text) < 40, "Ordina più!", Text1.Text )

    Il controllo Label mostra Ordina di più! poiché il valore di Text1 è maggiore di 20 ma minore di 40.

  4. In Text1 digitare 15.

    Il controllo Label mostra Ordina MOLTO di più! poiché il valore di Text1 è minore di 20.

  5. In Text1 digitare 50.

    Il controllo Label mostra il valore digitato perché è superiore a 40.