Funcions If i Switch

S'aplica a: Columnes de fórmules d'aplicacions de Dataverse llenç Fluxos d'escriptori Aplicacions Power Platform basades en models CLI

Determina si qualsevol condició d'un conjunt és certa (If) o el resultat d'una fórmula coincideix amb qualsevol valor d'un conjunt (Switch) i, a continuació, torna un resultat o executa una acció.

Descripció

La funció If prova una o diverses condicions fins que es trobi un resultat true. Si es troba aquest resultat, es retornarà el valor corresponent. Si no es troba aquest resultat, es retornarà un valor per defecte. En qualsevol cas, el valor retornat podria ser una cadena que es mostrarà, una fórmula que s'avaluarà o una altra forma de resultats.

La funció Switch avalua una fórmula i determina si el resultat coincideix amb qualsevol valor d'una seqüència que especifiqueu. Si es troba una coincidència, es retornarà el valor corresponent. Si no es troba cap coincidència, es retornarà el valor per defecte. En qualsevol cas, el valor retornat podria ser una cadena que es mostrarà, una fórmula que s'avaluarà o una altra forma de resultats.

If i Switch són molt semblants, però hauríeu d'utilitzar la millor funció per a la vostra situació:

  • Utilitzeu If si voleu avaluar una única condició. La sintaxi més comuna per a aquesta funció és If(Condition,ThenResult,DefaultResult ), que proporciona el comú "if ... aleshores … Més ..." patró vist en altres eines de programació.
  • Utilitzeu If per avaluar diverses condicions no relacionades. Al Power Apps (a diferència del Microsoft Excel), podeu especificar diverses condicions sense haver d'imbricar les fórmules If.
  • Utilitzeu Switch per avaluar una única condició amb diverses possibles coincidències. També podeu utilitzar If en aquest cas, però hauríeu de repetir la fórmula per a cada possible coincidència.

Podeu utilitzar totes dues funcions en fórmules de comportament per ramificar entre dues o més accions. Només una branca activarà una acció. Les condicions i les coincidències s'avaluen per ordre i s'aturen si una condició és true o si es troba una coincidència.

Es torna un camp En blanc si no hi ha condicions true, no s'ha trobat cap coincidència i no especifiqueu cap resultat per defecte.

Sintaxi

If(Condició, ThenResult, [DefaultResult])
If(Condició1, ThenResult1, [Condició2, ThenResult2, ..., [DefaultResult]])

  • Condicions: obligatori. Fórmules per provar si són true. Aquestes fórmules normalment contenen operadors de comparació, (com ara <, > i =) i tenen funcions de prova, com ara IsBlank i IsEmpty.
  • ThenResult: obligatori. Valor corresponent que es tornarà per a una condició que s'avalua com a true.
  • DefaultResult: opcional. Valor que es tornarà si no s'avalua cap condició com a true. Si no especifiqueu aquest argument, es torna un valor en blanc.

Switch(Fórmula, Coincidència1, Resultat1, [Coincidència2, Resultat2, ..., [DefaultResult]])

  • Fórmula: obligatori. Fórmula per avaluar si hi ha coincidències. Aquesta fórmula només s'avalua una vegada.
  • Match(s): obligatori. Valors que es comparen amb el resultat de la Fórmula. Si es troba una coincidència exacta, es retornarà el Resultat corresponent.
  • Resultats: obligatori. El valor corresponents es retornarà si es troba una coincidència exacta.
  • DefaultResult: opcional. Si no es troba cap coincidència exacta, es retorna aquest valor. Si no especifiqueu aquest argument, es torna un valor en blanc.

Exemples

Valors en fórmules

Als exemples següents, un Control lliscant (anomenat Slider1) té un valor de 25.

Fórmula Descripció Resultat
If( Slider1.Value = 25, "Result1" ) La condició és true i el resultat corresponent es torna. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) La condició és true i el resultat corresponent es torna. "Result1"
If(Slider1.Value>1000, "Result1") La condició és false i no s'ha proporcionat DefaultResult. blank
If(Slider1.Value>1000, "Result1", "Result2") La condició és false, s'ha proporcionat DefaultResult i s'ha retornat. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) La primera condició és true i el resultat corresponent es torna. La segona condició també és true, però no s'avalua perquè apareix més endavant a la llista d'arguments que una condició que s'avalua com a true. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) La primera condició és false perquè el control lliscant no està en blanc. La segona condició és true perquè el valor del control lliscant és un número i es torna el resultat corresponent. "Result2"
If(Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") La primera i la segona condició són false, s'ha proporcionat DefaultResult i s'ha retornat. "Result3"
Switch(Slider1.Value, 25, "Result1") El valor del control lliscant coincideix amb el primer valor que s'ha de comprovar i es retornarà el resultat corresponent. "Result1"
Switch(Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3") El valor del control lliscant coincideix amb el segon valor que s'ha de comprovar i es retornarà el resultat corresponent. "Result2"
Switch(Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult") El valor del control lliscant no coincideix amb cap valor que s'hagi de comprovar. S'ha proporcionat DefaultResult, per la qual cosa es torna. "DefaultResult"

Ramificació en fórmules de comportament

En aquests exemples, un control Entrada de text anomenat FirstName té el valor "John" teclejat.

Fórmula Descripció Resultat
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) La condició és true, de manera que s'executa la funció Navigate. Podeu utilitzar la funció IsBlank per provar si un camp del formulari obligatori s'ha emplenat. Si FirstName és blank, la fórmula no té cap efecte. true

La pantalla es canvia a Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sense l'operador !, la condició és false, de manera que la funció Navigate no s'executa. La funció Back s'ha subministrat com a DefaultResult i, per tant, s'executa. true

Es torna a la pantalla que s'ha mostrat abans.
Switch(FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None), "Kirstin", Navigate(Screen2, ScreenTransition.None), "John", Navigate(Screen3, ScreenTransition.None)) El valor de FirstName.Text es compara amb "Carlos", "Kirstin" i "John" en aquest ordre. Una coincidència es troba amb "John", de manera que l'aplicació navega a Screen3. true

La pantalla es canvia a Screen3.

Pas a pas

  1. Afegiu un control Entrada de text i anomeneu-lo Text1 si no té aquest nom per defecte.

  2. A Text1, escriviu 30.

  3. Afegiu un control Label i definiu-ne la propietat Text en aquesta fórmula:
    If(Value(Text1.Text) < 20, "Demana'n MOLTS més!", Value(Text1.Text) < 40, "Demana'n més!", Text1.Text)

    El control Label mostra Més comandes! perquè el valor de Text1 és superior a 20 però inferior a 40.

  4. A Text1, escriviu 15.

    El control Label mostra MOLTES més comandes! perquè el valor de Text1 és inferior a 20.

  5. A Text1, escriviu 50.

    El control Etiqueta mostra el valor que heu escrit perquè és superior a 40.