Comprender variables de aplicacións de lenzo en Power Apps

Se empregou outra ferramenta de programación, como por exemplo Visual Basic ou JavaScript, pode estar a preguntarse: Onde están as variables? Power Apps é un pouco diferente e require un enfoque diferente. En vez de buscar unha variable cando cree unha aplicación de lenzo, pregúntese: Que faría en Excel?

Noutras ferramentas, é posible que realizase explicitamente un cálculo e almacenase o resultado nunha variable. Non obstante, Power Apps e Excel volven calcular automaticamente as fórmulas e os cambios nos datos de entrada, polo que normalmente non é preciso crear e actualizar variables. Ao empregar este enfoque sempre que sexa posible, pode crear, comprender e facer o mantemento da súa aplicación máis facilmente.

Nalgúns casos, terá que empregar variables en Power Apps, o cal amplía o modelo de Excel engadindo fórmulas de comportamento. Estas fórmulas execútanse cando, por exemplo, un usuario selecciona un botón. Dentro dunha fórmula de comportamento, adoita ser útil establecer unha variable para usar noutras fórmulas.

En xeral, evite usar variables. Pero ás veces só unha variable pode permitir a experiencia que quere. As variables créanse e clasifícanse en tipos de maneira implícita cando aparecen en funcións que establecen os seus valores.

Traducir Excel a Power Apps

Excel

Revisemos como funciona Excel. Unha cela pode conter un valor, como un número ou unha cadea, ou unha fórmula baseada nos valores doutras celas. Despois de que o usuario introduza un valor diferente nunha cela, Excel volverá calcular automaticamente todas as fórmulas que dependan do novo valor. Non é preciso facer ningunha programación para permitir este comportamento.

No seguinte exemplo, a cela A3 establécese na fórmula A1+A2. Se A1 ou A2 cambia, A3 calcularase de novo automaticamente para reflectir o cambio. Este comportamento non require codificación fóra da propia fórmula.

Animación de repetición do cálculo da suma de dous números en Excel

Excel non ten variables. O valor dunha cela que contén unha fórmula cambia en función da súa entrada, pero non hai xeito de recordar o resultado dunha fórmula e almacenala nunha cela ou en calquera outro lugar. Se cambia o valor dunha cela, é posible que cambie toda a folla de cálculo e se perdan todos os valores previamente calculados. Un usuario de Excel pode copiar e pegar celas, pero iso está baixo o control manual do usuario e non é posible con fórmulas.

Power Apps

As aplicacións que crea en Power Apps compórtase dun xeito moi parecido a Excel. En lugar de actualizar as celas, pode engadir controis onde queira nunha pantalla e nomealos para o seu uso en fórmulas.

Por exemplo, pode replicar o comportamento de Excel nunha aplicación engadindo un control de Etiqueta chamado Etiqueta1 e dous controis de Entrada de texto chamados TextInput1 e TextInput2. Se a continuación define a propiedade Text de Label1 en TextInput1 + TextInput2, sempre amosará a suma de cantos números estean en TextInput1 e TextInput2 automaticamente.

Calcular a suma de dous números en Power Apps

Teña en conta que o control Etiqueta1 está seleccionado, mostrando a súa fórmula de Texto na barra de fórmulas da parte superior da pantalla. Aquí temos a fórmula TextInput1 + TextInput2. Esta fórmula crea unha dependencia entre estes controis, do mesmo xeito que se crean dependencias entre celas nun libro de Excel. Cambiemos o valor de TextInput1:

Animación do cálculo da suma de dous números en Power Apps

A fórmula para Etiqueta1 calculouse de novo automaticamente, mostrando o novo valor.

En Power Apps, pode usar fórmulas para determinar non só o valor principal dun control, senón tamén propiedades como o formato. No seguinte exemplo, unha fórmula para a propiedade Color da etiqueta mostrará automaticamente os valores negativos en vermello. A función If debe ser moi familiar á de Excel:

If( Value(Label1.Text) < 0, Red, Black )

Animación do formato condicional

Pode usar fórmulas para unha gran variedade de escenarios:

  • Mediante o uso do GPS do seu dispositivo, un control de mapa pode mostrar a súa localización actual cunha fórmula que use Location.Latitude e Location.Longitude. A medida que se move, o mapa rastrexará automaticamente a súa localización.
  • Outros usuarios poden actualizar orixes de datos. Por exemplo, outros membros do seu equipo poden actualizar elementos nunha lista de SharePoint. Cando actualice unha orixe de datos, calquera fórmula dependente calcularase de novo automaticamente para reflectir os datos actualizados. Se segue co exemplo, pode definir unha propiedade Items de galería na fórmula Filter (SharePointList), que amosará automaticamente o conxunto acabado de filtrar de rexistros.

Vantaxes

O uso de fórmulas para crear aplicacións ten moitas vantaxes:

  • Se coñece Excel, coñecerá Power Apps. O modelo e a linguaxe das fórmulas son iguais.
  • Se utilizou outras ferramentas de programación, pense canto código se precisaría para realizar estes exemplos. En Visual Basic, tería que escribir un controlador de eventos para o evento de cambio en cada control de entrada de texto. O código para realizar o cálculo en cada un destes é redundante e podería anularse a súa sincronización ou ben necesitaría escribir unha rutina secundaria común. En Power Apps, pode conseguir todo iso cunha fórmula única dunha liña.
  • Para comprender d onde vén o texto de Etiqueta1, sabe exactamente onde buscar: a fórmula da propiedade Text. Non hai outra forma de afectar ao texto deste control. Nunha ferramenta de programación tradicional, calquera controlador de eventos ou rutina secundaria podería cambiar o valor da etiqueta desde calquera parte do programa. Isto pode facer difícil rastrexar cando e onde cambiou unha variable.
  • Se o usuario cambia un cursor da barra de desprazamento e logo cambia de idea, poden cambiar o cursor da barra de desprazamento ao seu valor orixinal. É como se nada cambiara nunca: a aplicación mostra os mesmos valores de control que antes. Non hai ramificacións para probar e preguntar "que ocorrería se", do mesmo xeito que non hai ningunha en Excel.

En xeral, se consegue un efecto empregando unha fórmula, mellor. Deixe que o motor de fórmulas de Power Apps traballo por vostede.

Saiba cando usar variables

Cambiemos o noso sinxelo agregador para que actúe como unha máquina de engadir antiga cun total acumulado. Se selecciona un botón Engadir, engadirá un número ao total acumulado. Se selecciona un botón Borrar, restablecerá o total acumulado a cero.

Mostrar Descripción
Aplicación cun control de entrada de texto, unha etiqueta e dous botóns Cando se inicia a aplicación, o total acumulado é 0.

O punto vermello representa o dedo do usuario na caixa de entrada de texto, onde o usuario introduce 77.
O control de entrada de texto contén 77 e está a premerse o botón Engadir O usuario selecciona o botón Engadir.
O total é de 77 e engádenselle outros 77 77 engádese ao total acumulado.

O usuario selecciona o botón Engadir de novo.
O total é de 154 antes de borralo. Engádese de novo 77 ao total acumulado obtendo como resultado 154.

O usuario selecciona o botón Borrar.
O total queda borrado. O total acumulado restablécese a 0.

A nosa máquina de engadir usa algo que non existe nun botón de Excel:. Nesta aplicación, non pode empregar só fórmulas para calcular o total acumulado porque o seu valor depende dunha serie de accións que o usuario realice. No seu lugar, o noso total acumulado debe rexistrarse e actualizarse manualmente. A maioría das ferramentas de programación almacenan esta información nunha variable.

Ás veces necesitará unha variable para que a súa aplicación se comporte do xeito que quere. Pero o enfoque inclúe advertencias:

  • Debe actualizar manualmente o total acumulado. A repetición do cálculo automática non o fará por vostede.
  • O total acumulado xa non se pode calcular en función dos valores doutros controis. Depende de cantas veces o usuario seleccionou o botón Engadir e que valor tiña no control de entrada de texto cada vez. Inseriu o usuario o 77 e seleccionou Engadir dúas veces ou especificaron 24 e 130 para cada unha das adicións? Non se pode detectar a diferenza unha vez que o total alcanzara os 154.
  • Os cambios no total poden vir por distintos camiños. Neste exemplo, os botóns Engadir e Borrar poden actualizar o total. Se a aplicación non se comporta como espera, que botón está a causar o problema?

Usar unha variable global

Para crear a nosa máquina de engadir, é preciso que unha variable conteña o total acumulado. As variables máis sinxelas coas que traballar en Power Apps son as variables globais.

Como funcionan as variables globais:

  • Defina o valor da variable global coa función Establecer. Set( MyVar, 1 ) establece a variable global MyVar nun valor de 1.
  • Empregue a variable global facendo referencia ao nome usado coa función Establecer. Neste caso, MyVar amosará 1.
  • As variables globais poden conter calquera valor, incluído cadeas, números, rexistros e táboas.

Reconstruamos a nosa máquina de engadir empregando unha variable global:

  1. Engada un control de entrada de texto chamado Entrada de texto1 e dous botóns chamados Botón1 e Botón2.

  2. Estableza a propiedade Text do Botón1 en "Engadir" e estableza a propiedade Text de Botón2 en "Borrar".

  3. Para actualizar o total acumulado sempre que un usuario seleccione o botón Engadir, axuste a súa propiedade OnSelect nesta fórmula:

    Set( RunningTotal, RunningTotal + TextInput1 )

    A mera existencia desta fórmula establece RunningTotal como unha variable global que contén un número por mor do operador +. Pode facer referencia a RunningTotal en calquera parte da aplicación. Sempre que o usuario abre esta aplicación, RunningTotal ten un valor inicial de baleiro.

    A primeira vez que un usuario selecciona o botón Engadir e se executa Establecer, RunningTotal establécese no valor RunningTotal + TextInput1.

    A propiedade OnSelect do botón Engadir está axustada na función Axustar

  4. Para establecer o total acumulado en 0 sempre que o usuario seleccione o botón Borrar, axuste a súa propiedade OnSelect nesta fórmula:

    Set( RunningTotal, 0 )

    A propiedade OnSelect do botón Borrar está axustada na función Axustar

  5. Engade un control Etiqueta e configure a súa propiedade Text en RunningTotal.

    Esta fórmula calcularase de novo automaticamente e mostraralle ao usuario o valor de RunningTotal debido a que cambia en función dos botóns que selecciona o usuario.

    A propiedade de texto da etiqueta está definida no nome da variable

  6. Faga unha vista previa da aplicación e teremos a nosa máquina de engadir como se describe anteriormente. Insira un número na caixa de texto e prema o botón Engadir varias veces. Cando estea listo, volva á experiencia de creación mediante a tecla Esc.

    O control de entrada de texto contén un valor e a etiqueta contén o total acumulado

  7. Para amosar o valor da variable global, seleccione o menú Ficheiro e seleccione Variables no panel esquerdo.

    Opción de variables no menú Ficheiro

  8. Para amosar todos os lugares onde se define e usa a variable, selecciónea.

    Lista de localizacións onde se usa a variable

Tipos de variables

Power Apps ten tres tipos de variables:

Tipo de variables Scope Descripción Funcións que establecen
Variables globais App A máis sinxela de usar. Contén un número, cadea de texto, booleano, rexistro, táboa, etc. que poden ser referencias desde calquera parte da aplicación. Configurar
Variables de contexto Pantalla Estupendo para pasar valores a unha pantalla, moi parecidos aos parámetros a un procedemento noutros idiomas. Pódese facer referencia a eles só desde unha pantalla. UpdateContext
Navegar
Coleccións App Contén unha táboa á que se pode facer referencia desde calquera lugar da aplicación. Permite modificar o contido da táboa en lugar de establecerse como un conxunto. Pódese gardar no dispositivo local para o seu posterior uso. Collect
ClearCollect

Crear e eliminar variables

Todas as variables créanse de xeito implícito cando aparecen nunha función Set, UpdateContext, Navigate, Collect ou ClearCollect. Para declarar unha variable e o seu tipo, só hai que incluíla en calquera destas funcións en calquera parte da aplicación. Ningunha destas funcións crea variables; só enchen as variables con valores. Nunca declara variables de xeito explícito como noutra ferramenta de programación, e toda a escritura está implícita desde o uso.

Por exemplo, pode ter un control de botón cunha fórmula OnSelect igual a Set( X, 1 ). Esta fórmula establece X como unha variable cun tipo de número. Pode usar X en fórmulas como número e esa variable ten un valor de baleiro despois de abrir a aplicación pero antes de seleccionar o botón. Cando seleccione o botón, asignará a X o valor de 1.

Se engadiu outro botón e definiu a súa propiedade OnSelect en Set( X, "Hello" ), pode produciuse un erro porque o tipo (cadea de texto) non coincide co tipo do Conxunto (número) anterior. Todas as definicións implícitas da variable deben coincidir en tipo. De novo, todo isto pasou porque mencionou X nas fórmulas, non porque ningunha destas fórmulas se executase.

Elimine unha variable eliminando todas as funciones Establecer, UpdateContext, Navegar, Recoller ou ClearCollect que establecen implicitamente a variable. Sen estas funcións, a variable non existe. Tamén debe eliminar calquera referencia á variable porque vai causar un erro.

Vida útil da variable e valor inicial

Todas as variables consérvanse na memoria mentres se executa a aplicación. Unha vez pechada a aplicación, os valores que contiñan as variables pérdense.

Pode almacenar os contidos dunha variable nunha orixe de datos empregando as funcións Parche ou Recoller. Tamén pode almacenar valores nas coleccións do dispositivo local mediante a función SaveData.

Cando o usuario abre a aplicación, todas as variables teñen un valor inicial de baleiro.

Lectura de variables

Utilice o nome da variable para ler o seu valor. Por exemplo, pode definir unha variable con esta fórmula:

Set( Radius, 12 )

A continuación, simplemente pode usar Radio en calquera lugar no que poida usar un número e será substituído por 12:

Pi() * Power( Radius, 2 )

Se asigna a unha variable de contexto o mesmo nome que unha variable global ou a unha colección, a variable de contexto terá prioridade. Non obstante, aínda pode facer referencia á variable global ou á colección se usa o operador de desambiguación [@Radius].

Usar unha variable de contexto

Botemos unha ollada a como se crearía a nosa máquina de engadir usando unha variable de contexto en vez dunha variable global.

Como funcionan as variables de contexto:

  • Establece e axusta variables de contexto implicitamente mediante a función UpdateContext ou Navegar. Cando se inicia a aplicación, o valor inicial de todas as variables de contexto é baleiro.
  • Actualice variables de contexto con rexistros. Noutras ferramentas de programación, adoita empregar "=" para a asignación, como en "x = 1". Para variables de contexto, use { x: 1 } no seu lugar. Cando use unha variable de contexto, use o seu nome directamente sen a sintaxe do rexistro.
  • Tamén pode configurar unha variable de contexto cando a use a función Navegar para mostrar unha pantalla. Se pensa nunha pantalla como unha especie de procedemento ou rutina secundaria, este enfoque aseméllase ao paso de parámetros noutras ferramentas de programación.
  • Agás para Navegar, as variables de contexto limítanse ao contexto dunha única pantalla, que é onde reciben o seu nome. Non pode usalas nin configuralas fóra deste contexto.
  • As variables de contexto poden conter calquera valor, incluído cadeas, números, rexistros e táboas.

Reconstruamos a nosa máquina de engadir empregando unha variable de contexto:

  1. Engada un control de entrada de texto chamado Entrada de texto1 e dous botóns chamados Botón1 e Botón2.

  2. Estableza a propiedade Text do Botón1 en "Engadir" e estableza a propiedade Text de Botón2 en "Borrar".

  3. Para actualizar o total acumulado sempre que un usuario seleccione o botón Engadir, axuste a súa propiedade OnSelect nesta fórmula:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    A mera existencia desta fórmula establece RunningTotal como unha variable de contexto que contén un número por mor do operador +. Pode facer referencia a RunningTotal en calquera parte desta pantalla. Sempre que o usuario abre esta aplicación, RunningTotal ten un valor inicial de baleiro.

    A primeira vez que o usuario selecciona o botón Engadir e se executa UpdateContext, RunningTotal establécese no valor RunningTotal + TextInput1.

    Propiedade OnSelect do botón Engadir

  4. Para establecer o total acumulado en 0 sempre que o usuario seleccione o botón Borrar, axuste a súa propiedade OnSelect nesta fórmula:

    UpdateContext( { RunningTotal: 0 } )

    Novamente, UpdateContext úsase coa fórmula UpdateContext( { RunningTotal: 0 } ).

    Propiedade OnSelect do botón Borrar

  5. Engade un control Etiqueta e configure a súa propiedade Text en RunningTotal.

    Esta fórmula calcularase de novo automaticamente e mostraralle ao usuario o valor de RunningTotal debido a que cambia en función dos botóns que selecciona o usuario.

    Propiedade de texto da etiqueta

  6. Faga unha vista previa da aplicación e teremos a nosa máquina de engadir como se describe anteriormente. Insira un número na caixa de texto e prema o botón Engadir varias veces. Cando estea listo, volva á experiencia de creación mediante a tecla Esc.

    O control de entrada de texto mostra un valor e a etiqueta mostra o total acumulado

  7. Pode definir o valor dunha variable de contexto mentres navega a unha pantalla. Isto é útil para pasar "contexto" ou "parámetros" dunha pantalla a outra. Para demostrar esta técnica, insira unha pantalla, insira un botón e estableza a súa propiedade OnSelect nesta fórmula:

    Navigate( Screen1, None, { RunningTotal: -1000 } )

    Propiedade OnSelect dun botón

    Manteña premida a tecla Alt mentres selecciona este botón para mostrar Pantalla1 e establecer a variable de contexto RunningTotal en -1000.

    Pantalla1 está aberto

  8. Para amosar o valor da variable de contexto, seleccione o menú Ficheiro e seleccione Variables no panel esquerdo.

    Opción de variables no menú Ficheiro

  9. Para amosar onde se define e usa a variable de contexto, selecciónea.

    Lista de onde se usa unha variable

Utilizar unha colección

Finalmente, botemos unha ollada á creación da nosa máquina de adición cunha colección. Como unha colección ten unha táboa que é fácil de modificar, faremos que esta máquina de adición teña unha "cinta de papel" de cada valor a medida que se introduzan.

Como funcionan as coleccións:

  • Cree e configure coleccións mediante a función ClearCollect. Pode usar a función Recoller no seu lugar, pero precisará efectivamente outra variable en lugar de substituír a antiga.
  • Unha colección é un tipo de orixe de datos e, polo tanto, unha táboa. Para acceder a un único valor dunha colección, use a función Primeiro e extraia un campo do rexistro resultante. Se empregou un único valor con ClearCollect, este será o campo Valor, como neste exemplo:
    First( VariableName ).Value

Recreemos a nosa máquina de engadir mediante unha colección:

  1. Engada un control de Entrada de texto chamado TextInput1 e dous botóns chamados Botón1 e Botón2.

  2. Estableza a propiedade Texto do Botón1 en "Engadir" e estableza a propiedade Text de Botón2 en "Borrar".

  3. Para actualizar o total acumulado sempre que un usuario seleccione o botón Engadir, axuste a súa propiedade OnSelect nesta fórmula:

    Collect( PaperTape, TextInput1.Text )

    A mera existencia desta fórmula establece PaperTape como unha colección que contén unha táboa dunha única columna de cadeas de texto. Pode facer referencia a PaperTape en calquera parte desta aplicación. Sempre que un usuario abre esta aplicación, PaperTape é unha táboa baleira.

    Cando se executa esta fórmula, engade o novo valor ao final da colección. Debido a que estamos engadindo un único valor, Recoller sitúao automaticamente nunha táboa dunha única columna e o nome da columna é Valor, que usará máis tarde.

    Propiedade OnSelect do botón Engadir

  4. Para borrar a cinta de papel cando o usuario seleccione o botón Borrar, axuste a súa propiedade OnSelect nesta fórmula:

    Clear( PaperTape )

    Propiedade OnSelect do botón Borrar

  5. Para ver o total acumulado, engade unha etiqueta e configure a súa propiedade Text a esta fórmula:

    Sum( PaperTape, Value )

    Propiedade de texto da etiqueta

  6. Para executar a máquina de engadir, prema F5 para abrir Vista previa, introduza números no control de entrada de texto e seleccione os botóns.

    O control de entrada de texto mostra un valor e a etiqueta mostra o total acumulado

  7. Para volver ao espazo de traballo predeterminado, prema a tecla Esc.

  8. Para mostrar a cinta de papel, insira o control Táboa de datos e estableza a súa propiedade Items nesta fórmula:

    PaperTape

    No panel da dereita, seleccione a columna Valor para mostrala.

    Táboa de datos que mostra os valores engadidos á colección

  9. Para ver os valores da súa colección, seleccione Coleccións no menú Ficheiro.

    Vista previa da colección PaperTape

  10. Para almacenar e recuperar a súa colección, engada dous controis de botóns adicionais e configure as súas propiedades Text en Cargar e Gardar. Axuste a propiedade OnSelect do botón Cargar nesta fórmula:

    Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )

    Debe borrar a colección primeiro porque LoadData engadirá os valores almacenados ao final da colección.

    Propiedade OnSelect do botón Cargar

  11. Axuste a propiedade OnSelect do botón Gardar nesta fórmula:

    SaveData( PaperTape, "StoredPaperTape" )

    Propiedade OnSelect* do botón Gardar

  12. Faga unha vista previa de novo premendo a tecla F5, introduza números no control de entrada de texto e seleccione os botóns. Seleccione o botón Gardar. Peche e volva cargar a aplicación e seleccione o botón Cargar para volver cargar a súa colección.

Nota

As funcións SaveData e LoadData funcionan en Power Apps Mobile, pero non en Power Apps Studio nin no reprodutor web de Power Apps.