Entendre les variables de les aplicacions de llenç
Si heu utilitzat una altra eina de programació, com Visual Basic ara JavaScript, potser us preguntareu: On són les variables? Power Apps és una mica diferent i requereix un enfocament diferent. En lloc d'arribar a una variable quan creeu una aplicació de llenç, pregunteu-vos: Què faria a Excel?
En altres eines, pot ser que hàgiu efectuat explícitament un càlcul i s'emmagatzemi el resultat en una variable. No obstant, el Power Apps i l'Excel tornen a calcular automàticament les fórmules a mesura que canvia la informació d'entrada, de manera que normalment no cal que creeu i actualitzeu variables. Prenent aquest enfocament sempre que sigui possible, podeu crear, entendre i mantenir més fàcilment l'aplicació.
En alguns casos, haureu d'utilitzar variables Power Apps, que amplien el model d'Excel afegint fórmules de comportament. Aquestes fórmules s'executen quan, per exemple, un usuari selecciona un botó. Dins d'una fórmula de comportament, sovint és útil definir una variable que s'ha d'utilitzar en altres fórmules.
En general, eviteu l'ús de variables. Però, de vegades, només una variable pot permetre l'experiència que voleu. Les variables es creen implícitament i s'escriuen quan apareixen en funcions que defineixen els seus valors.
Traduir l'Excel al Power Apps
Excel
Revisem com funciona l'Excel. Una cel·la pot contenir un valor, com ara un número o una cadena, o una fórmula que es basa en els valors d'altres cel·les. Quan l'usuari introdueix un valor diferent dins d'una cel·la, l'Excel torna a calcular les fórmules que depenen del valor nou. No heu de fer cap programació per habilitar aquest comportament.
A l'exemple següent, la cel·la A3 es defineix a la fórmula A1+A2. Si A1 o A2 canvia, A3 es torna a calcular automàticament per reflectir el canvi. Aquest comportament no requereix cap codi a part de la fórmula en si.
L'Excel no té variables. El valor d'una cel·la que conté una fórmula canvia en funció de l'entrada, però no hi ha manera de recordar el resultat d'una fórmula i emmagatzemar-lo en una cel·la o en qualsevol altre lloc. Si canvieu el valor d'una cel·la, el full de càlcul sencer pot canviar i tots els valors calculats prèviament es perdran. Un usuari de l'Excel pot copiar i enganxar cel·les, però això està sota el control manual de l'usuari i no és possible amb fórmules.
Power Apps
Les aplicacions que creeu en el Power Apps es comporten molt com a l'Excel. En lloc d'actualitzar les cel·les, podeu afegir controls allà on vulgueu en una pantalla i anomenar-los per utilitzar-los en fórmules.
Per exemple, podeu replicar el comportament de l'Excel en una aplicació afegint un control Etiqueta , anomenat Etiqueta1, i dos controls d'entrada de text, anomenats EntradaText1 i EntradaText2. Si després definiu la propietat Text de Label1 a TextInput1 + TextInput2, sempre es mostrarà automàticament la suma dels números que hi ha a TextInput1 i TextInput2 .
Observeu que el control Etiqueta1 està seleccionat, mostrant la seva fórmula Text a la barra de fórmules de la part superior de la pantalla. Aquí trobem la fórmula TextInput1+TextInput2. Aquesta fórmula crea una dependència entre aquests controls, de la mateixa forma que es creen dependències entre les cel·les d'un llibre de treball de l'Excel. Canviem el valor de TextInput1:
La fórmula per a Label1 s'ha tornat a calcular automàticament i mostra el valor nou.
Al Power Apps, podeu utilitzar fórmules per determinar no només el valor principal d'un control, sinó també les propietats com el format. En l'exemple següent, una fórmula per a la propietat Color de l'etiqueta mostrarà automàticament els valors negatius en vermell. La funció If hauria de semblar familiar des de l'Excel:
If( Value(Label1.Text) < 0, Red, Black )
Podeu utilitzar fórmules per a una gran varietat d'escenaris:
- Utilitzant el GPS del dispositiu, un control de mapa pot mostrar la ubicació actual utilitzant una fórmula que utilitzi Location.Latitude i Location.Longitude. A mesura que us moveu, el mapa automàticament seguirà la vostra ubicació.
- Altres usuaris poden actualitzar les fonts de dades. Per exemple, altres usuaris de l'equip poden actualitzar els elements d'una llista. En actualitzar una font de dades, les fórmules dependents es tornen a calcular automàticament per reflectir les dades actualitzades. Més enllà de l'exemple, podeu definir la propietat Items d'una galeria a la fórmula Filter( SharePointList ), que mostrarà automàticament el conjunt de registres acabat defiltrar.
Avantatges
L'ús de fórmules per crear aplicacions té molts avantatges:
- Si coneixeu l'Excel, ja coneixeu el Power Apps. El llenguatge de models i fórmules és el mateix.
- Si heu utilitzat altres eines de programació, penseu en la quantitat de codi necessària per aconseguir aquests exemples. Al Visual Basic, heu d'escriure un controlador d'esdeveniments per a l'esdeveniment de canvi en cada control d'entrada de text. El codi per dur a terme el càlcul en cadascun és redundant i podria perdre la sincronització, o hauríeu d'escriure una subrutina comuna. Al Power Apps, ho heu aconseguit tot amb una única fórmula d'una sola línia.
- Per entendre d'on prové el text de Label1, sabeu exactament on buscar: la fórmula de la propietat Text . No hi ha cap altra manera d'afectar el text d'aquest control. En una eina de programació tradicional, qualsevol controlador d'esdeveniments o subrutina podria canviar el valor de l'etiqueta, des de qualsevol part del programa. Això pot dificultar fer un seguiment de quan i on s'ha canviat una variable.
- Si l'usuari canvia un control lliscant i després canvia d'opinió, pot canviar el control lliscant al seu valor original. I és com si res no hagués canviat mai: l'aplicació mostra els mateixos valors de control que abans. No hi ha ramificacions per a l'experimentació i preguntar "i si," igual que no n'hi ha a l'Excel.
En general, si podeu aconseguir un efecte mitjançant una fórmula, serà millor. Deixeu que el motor de fórmules del Power Apps funcioni per a vós.
Saber quan utilitzar variables
Canviem la nostra senzilla calculadora per poder funcionar com una màquina de sumar antiga, amb un total d'execució. Si seleccioneu un botó Afegeix, haureu d'afegir un número al total d'execució. Si seleccioneu un botó Esborra, restablireu el total d'execució a zero.
Visualització | Descripció |
---|---|
![]() |
Quan s'inicia l'aplicació, el total d'execució és 0. El punt vermell representa el dit de l'usuari al quadre d'entrada de text, on l'usuari introdueix 77. |
![]() |
L'usuari selecciona el botó Afegeix. |
![]() |
77 s'afegeix al total d'execució. L'usuari selecciona de nou el botó Afegeix. |
![]() |
77 s'afegirà una altra vegada al total d'execució i donarà com a resultat 154. L'usuari selecciona el botó Esborra. |
![]() |
El total d'execució es restableix a 0. |
La nostra màquina de sumar utilitza una cosa que no existeix a l'Excel: un botó. En aquesta aplicació, no podeu utilitzar només fórmules per calcular el total que s'està executant, ja que el seu valor depèn d'una sèrie d'accions que l'usuari realitza. En lloc d'això, el nostre total d'execució s'ha d'enregistrar i actualitzar manualment. La majoria de l'eina de programació emmagatzemen aquesta informació en una variable.
De vegades, necessitareu una variable perquè l'aplicació es comporti la manera que vulgueu. Però l'enfocament té inconvenients:
- Heu d'actualitzar manualment el total d'execució. El càlcul automàtic no ho farà per vós.
- El total d'execució ja no es pot calcular segons els valors d'altres controls. Depèn de quantes vegades l'usuari ha seleccionat el botó Afegeix i quin valor tenia el control d'entrada de text cada vegada. L'usuari ha introduït 77 i ha seleccionat Afegeix dues vegades o ha especificat 24 i 130 per a cadascuna de les sumes? No podeu dir la diferència després que el total hagi assolit 154.
- Els canvis en el total poden provenir de diferents camins. En aquest exemple, els botons Afegeix i Esborra poden actualitzar el total. Si l'aplicació no es comporta de la manera que espereu, quin botó està causant el problema?
Utilitzar una variable global
Per crear la nostra màquina de sumar, és necessari que hi hagi una variable per conservar el total d'execució. Les variables més senzilles de treballar són Power Apps les variables globals.
Com funcionen les variables globals:
- Definiu el valor de la variable global amb la funció Set . Set( MyVar, 1 ) estableix la variable global MyVar en un valor d'1 .
- La variable global s'utilitza per fer referència al nom utilitzat amb la funció Set. En aquest cas, MyVar retornarà 1.
- Les variables globals poden contenir qualsevol valor, incloses cadenes, números, registres i taules.
Reconstruïm la nostra màquina de sumar mitjançant una variable global:
Afegiu un control d'entrada de text, anomenat TextInput1 i dos botons, anomenats Button1 i Button2.
Definiu la propietat Text de Button1 a "Afegeix" i definiu la propietat Text de Button2 a "Esborra".
Per actualitzar el total acumulat cada vegada que un usuari selecciona el botó Afegeix , definiu la seva propietat OnSelect en aquesta fórmula:
Set( RunningTotal, RunningTotal + TextInput1 )
La mera existència d'aquesta fórmula estableix RunningTotal com a variable global que conté un nombre a causa de l'operador +. Podeu fer referència a RunningTotal en qualsevol part de l'aplicació. Sempre que l'usuari obri aquesta aplicació, RunningTotal té un valor inicial en blanc.
La primera vegada que un usuari selecciona el botó Afegeix i estableix les execucions, RunningTotal es defineix en el valor RunningTotal + TextInput1.
Per definir el total acumulat a 0 cada vegada que l'usuari selecciona el botó Esborra , definiu la seva propietat OnSelect en aquesta fórmula:
Set( RunningTotal, 0 )
Afegiu un control Label i definiu-ne la propietat Text com a RunningTotal.
Aquesta fórmula es torna a calcular automàticament i mostrarà a l'usuari el valor de RunningTotal quan canviï en funció dels botons que selecciona l'usuari.
Previsualitzeu l'aplicació i tenim la nostra màquina de sumar, tal com s'ha descrit anteriorment. Introduïu un número al quadre de text i premeu el botó Afegeix unes quantes vegades. Quan estigueu a punt, torneu a l'experiència de creació mitjançant la tecla Esc.
Per mostrar el valor de la variable global, seleccioneu Variables al menú de creació de l'aplicació.
Per mostrar tots els llocs on es defineix i s'utilitza la variable, seleccioneu-la a Variables globals.
Tipus de variables
El Power Apps té tres tipus de variables:
Tipus de variables | Scope | Descripció | Funcions que estableixen |
---|---|---|---|
Variables globals | App | Més senzilles d'utilitzar. Conté un número, una cadena de text, un booleà, un registre, una taula, etc. als quals es pot fer referència des de qualsevol part de l'aplicació. | Conjunt |
Variables de context | Pantalla | Ideals per passar valors a una pantalla, igual que els paràmetres d'un procediment en altres llenguatges. Només s'hi pot fer referència en una pantalla. |
UpdateContext Navegar |
Col·leccions | App | Conté una taula a la qual es pot fer referència des de qualsevol part de l'aplicació. Permet modificar el contingut de la taula en comptes de definir-la com un conjunt. Es pot desar al dispositiu local per utilitzar-se més endavant. |
Recollir ClearCollect |
Crear i suprimir variables
Totes les variables es creen implícitament quan apareixen en una funció Set, UpdateContext, Navigate, Collect o ClearCollect. Per declarar una variable i el seu tipus, només cal que la inclogueu en qualsevol d'aquestes funcions a qualsevol part de l'aplicació. Cap d'aquestes funcions crea variables; només omplen els valors de les variables. No declareu explícitament les variables com podríeu en una altra eina de programació i tots els tipus són implícits.
Per exemple, pot ser que tingueu un control de botó amb una fórmula OnSelect igual a Set( X, 1 ). Aquesta fórmula defineix X com una variable amb un tipus de número. Podeu utilitzar X a les fórmules com a número i aquesta variable té un valor en blanc després d'obrir l'aplicació però abans de seleccionar el botó. Quan seleccioneu el botó, donareu a X el valor 1.
Si afegíssiu un altre botó i definíssiu la propietat OnSelect a Set( X, "Hola" ), es produiria un error perquè el tipus (cadena de text) no coincideix amb el tipus al Set anterior (nombre). Totes les definicions implícites de la variable han de coincidir en tipus. Una vegada més, tot això ha succeït perquè heu esmentat X en fórmules, no perquè cap d'aquestes fórmules s'executi en realitat.
Suprimiu una variable suprimint-ne totes les funcions Set, UpdateContext, Navigate, Collect o ClearCollect que estableixen implícitament la variable. Sense aquestes funcions, la variable no existeix. També heu de suprimir qualsevol referència a la variable perquè causarà un error.
Vida de les variables i valor inicial
Totes les variables es mantenen a la memòria mentre s'executa l'aplicació. Després de tancar l'aplicació, els valors que les variables contenien es perden.
Podeu emmagatzemar el contingut d'una variable en un font de dades mitjançant les funcions Patch o Collect. També podeu emmagatzemar valors a les col·leccions del dispositiu local mitjançant la funció SaveData .
Quan l'usuari obre l'aplicació, totes les variables tenen un valor inicial en blanc.
Llegir variables
Utilitzeu el nom de la variable per llegir-ne el valor. Per exemple, podeu definir una variable amb aquesta fórmula:
Set( Radius, 12 )
A continuació, podeu utilitzar Radi en qualsevol lloc on pugueu utilitzar un número i se substituirà per 12:
Pi() * Power( Radius, 2 )
Si doneu a una variable de context el mateix nom que una variable global o una col·lecció, la variable de context té prioritat. Tanmateix, encara podeu fer referència a la variable global o col·lecció si utilitzeu l'operador de desambiguació[@Radius].
Utilitzar una variable de context
Vegem com es crearia la nostra màquina de sumar mitjançant una variable de context en comptes d'una variable global.
Com funcionen les variables de context:
- Podeu establir i definir variables de context implícitament mitjançant la funció UpdateContext o Navigate . Quan s'inicia l'aplicació, totes les variables de context tenen un valor inicial en blanc.
- Actualitzeu variables de context amb registres. En altres eines de programació, normalment utilitzeu "=" per a l'assignació, com a "x = 1". Per a les variables de context, utilitzeu { x: 1 }. Quan utilitzeu una variable de context, utilitzeu el nom directament sense la sintaxi del registre.
- També podeu definir una variable de context quan utilitzeu la funció Navega per mostrar una pantalla. Si penseu en una pantalla com un tipus de procediment o subrutina, aquest mètode s'assembla a la transmissió de paràmetres en altres eines de programació.
- Excepte Navigate, les variables de context es limiten al context d'una sola pantalla, que és d'on obtenen el seu nom. No podeu utilitzar ni definir-les fora d'aquest context.
- Les variables de context poden contenir qualsevol valor, incloses cadenes, números, registres i taules.
Reconstruïm la nostra màquina de sumar mitjançant una variable de context:
Afegiu un control d'entrada de text, anomenat TextInput1 i dos botons, anomenats Button1 i Button2.
Definiu la propietat Text de Button1 a "Afegeix" i definiu la propietat Text de Button2 a "Esborra".
Per actualitzar el total acumulat cada vegada que un usuari selecciona el botó Afegeix , definiu la seva propietat OnSelect en aquesta fórmula:
UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )
La mera existència d'aquesta fórmula estableix RunningTotal com a variable de context que conté un nombre a causa de l'operador +. Podeu fer referència a RunningTotal en qualsevol part d'aquesta pantalla. Sempre que l'usuari obri aquesta aplicació, RunningTotal té un valor inicial en blanc.
La primera vegada que l'usuari selecciona el botó Afegeix i s'executa UpdateContext , RunningTotal es defineix en el valor RunningTotal + TextInput1.
Per definir el total acumulat a 0 cada vegada que l'usuari selecciona el botó Esborra , definiu la seva propietat OnSelect en aquesta fórmula:
UpdateContext( { RunningTotal: 0 } )
De nou, UpdateContext s'utilitza amb la fórmula UpdateContext( { RunningTotal: 0 } ).
Afegiu un control Label i definiu-ne la propietat Text com a RunningTotal.
Aquesta fórmula es torna a calcular automàticament i mostrarà a l'usuari el valor de RunningTotal quan canviï en funció dels botons que selecciona l'usuari.
Previsualitzeu l'aplicació i tenim la nostra màquina de sumar, tal com s'ha descrit anteriorment. Introduïu un número al quadre de text i premeu el botó Afegeix unes quantes vegades. Quan estigueu a punt, torneu a l'experiència de creació mitjançant la tecla Esc.
Podeu definir el valor d'una variable de context mentre navegueu fins a una pantalla. Això és útil per passar "context" o "paràmetres" des d'una pantalla a una altra. Per demostrar aquesta tècnica, inseriu una pantalla, inseriu un botó i definiu la propietat OnSelect en aquesta fórmula:
Navega( Pantalla1, Cap,RunningTotal { : -1000 } )
Manteniu premuda la tecla Alt mentre seleccioneu aquest botó per mostrar Screen1 i definiu la variable de context RunningTotal a -1000.
Per mostrar el valor de la variable de context, feu una de les accions següents:
Si utilitzeu la versió de visualització prèvia de Power Apps Studio, seleccioneu Variables al menú de creació d'aplicacions.
Si utilitzeu la versió clàssica de Power Apps Studio, seleccioneu el menú Fitxer i, a continuació, seleccioneu Variables a la subfinestra esquerra.
Per mostrar on es defineix i s'utilitza la variable de context, seleccioneu-la a Variables de context.
Utilitzar una col·lecció
Finalment, vegem la creació d'una màquina de sumar amb una col·lecció. Com que una col·lecció conté una taula que és fàcil de modificar, farem que aquesta màquina de sumar mantingui una "cinta de paper" de cada valor a mesura que s'introdueixi.
Com funcionen les col·leccions:
- Creeu i definiu col·leccions mitjançant la funció ClearCollect . Podeu utilitzar la funció Collect , però requerirà una altra variable en lloc de substituir l'antiga.
- Una col·lecció és un tipus de font de dades i, per tant, una taula. Per accedir a un únic valor d'una col·lecció, utilitzeu la funció First i extreu un camp del registre resultant. Si heu utilitzat un únic valor amb ClearCollect, aquest serà el camp Valor , com en aquest exemple:
First(VariableName). Valor
Recreem la nostra màquina de sumar mitjançant una col·lecció:
Afegiu un control d'entrada de text, anomenat TextInput1, i dos botons, anomenats Button1 i Button2.
Definiu la propietat Text de Button1 a "Afegeix" i definiu la propietat Text de Button2 a "Esborra".
Per actualitzar el total acumulat cada vegada que un usuari selecciona el botó Afegeix , definiu la seva propietat OnSelect en aquesta fórmula:
Collect( PaperTape, TextInput1.Text )
La mera existència d'aquesta fórmula defineix PaperTape com una col·lecció que conté una taula d'una sola columna de cadenes de text. Podeu fer referència a PaperTape en qualsevol part de l'aplicació. Cada vegada que un usuari obre aquesta aplicació, PaperTape és una taula buida.
Quan s'executa aquesta fórmula, s'afegeix el valor nou al final de la col·lecció. Com que estem afegint un valor únic, Collect l'afegeix automàticament en una taula d'una sola columna i el nom de la columna és Valor, que utilitzareu més endavant.
Per esborrar la cinta de paper quan l'usuari selecciona el botó Esborra , definiu la seva propietat OnSelect en aquesta fórmula:
Esborrar (cinta de paper)
Per visualitzar el total acumulat, afegiu una etiqueta i definiu-ne la propietat Text en aquesta fórmula:
Sum( PaperTape, Value )
Per executar la màquina de sumar, premeu F5 per obrir la visualització prèvia, introduïu els números al control d'entrada de text i seleccioneu els botons.
Per tornar a l'àrea de treball per defecte, premeu la tecla Esc.
Per visualitzar la cinta de paper, inseriu un control Taula de dades i definiu-ne la propietat Items en aquesta fórmula:
Cinta de paper
A la subfinestra dreta, seleccioneu Edita els camps i seleccioneu Afegeix un camp, seleccioneu la columna Valor i seleccioneu Afegeix per mostrar-lo.
Per veure els valors de la col·lecció, feu una de les accions següents:
Si utilitzeu la versió de visualització prèvia de Power Apps Studio, seleccioneu Variables al menú de creació de l'aplicació i, a continuació, seleccioneu Col·leccions.
Si utilitzeu la versió clàssica, Power Apps Studio seleccioneu Col·leccions al menú Fitxer .
Per emmagatzemar i recuperar la vostra col·lecció, afegiu dos controls addicionals de botó i definiu les seves propietats Text a Carrega i Desa. Definiu la propietat OnSelect del botó Carrega a aquesta fórmula:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
Heu d'esborrar primer la col·lecció perquè LoadData afegirà els valors emmagatzemats al final de la col·lecció.
Definiu la propietat OnSelect del botó Desa a aquesta fórmula:
SaveData( PaperTape, "StoredPaperTape" )
Premeu F5 per tornar a obrir la visualització prèvia, introduïu els números al control d'entrada de text i seleccioneu els botons. Seleccioneu el botó Desa. Tanqueu i torneu a carregar l'aplicació i, a continuació, seleccioneu el botó Carrega per recarregar la col·lecció.
Nota
Les funcions SaveData i LoadData funcionen al Power Apps mòbil, però no Power Apps Studio al reproductor web per Power Apps.