Compartir a través de


Comprender las variables de aplicaciones de lienzo

Si ha usado otra herramienta de programación, como Visual Basic o JavaScript, puede preguntar: ¿Dónde están las variables? Power Apps funciona de forma diferente y necesita un enfoque diferente. En lugar de buscar una variable al compilar una aplicación de lienzo, pregúntese lo siguiente: ¿qué haría en Excel?

En otras herramientas, puede realizar explícitamente un cálculo y almacenar el resultado en una variable. Pero Power Apps y Excel vuelven a calcular automáticamente las fórmulas a medida que cambian los datos de entrada, por lo que normalmente no es necesario crear ni actualizar variables. Con este enfoque, puede crear, comprender y mantener la aplicación con más facilidad.

A veces, debe usar variables en Power Apps, que amplía el modelo de Excel agregando fórmulas de comportamiento. Estas fórmulas se ejecutan cuando, por ejemplo, un usuario selecciona un botón. Dentro de una fórmula de comportamiento, a menudo resulta útil establecer una variable para usarla en otras fórmulas.

En general debe evitar el uso de variables, Pero a veces solo una variable le permite crear la experiencia que desee. Las variables se crean y se escriben implícitamente cuando aparecen en funciones que establecen sus valores.

Traducir Excel a Power Apps

Excel

Revisemos el funcionamiento de Excel. Una celda puede tener un valor, como un número o una cadena, o una fórmula basada en los valores de otras celdas. Al escribir un valor diferente en una celda, Excel recalcula automáticamente las fórmulas que dependen del nuevo valor. No es necesario realizar ninguna programación para habilitar este comportamiento.

En el ejemplo siguiente, la celda A3 usa la fórmula A1+A2. Si cambia A1 o A2 , A3 vuelve a calcular automáticamente para mostrar el cambio. Este comportamiento no requiere ninguna codificación fuera de la propia fórmula.

Animación de recálculo de la suma de dos números en Excel.

Excel no tiene variables. El valor de una celda con una fórmula cambia en función de su entrada, pero no hay forma de recordar el resultado de una fórmula y almacenarlo en una celda o en cualquier otro lugar. Si cambia el valor de una celda, toda la hoja de cálculo puede cambiar y se pierden los valores calculados anteriormente. Puede copiar y pegar celdas, pero eso es manual y no es posible con fórmulas.

Power Apps

Las aplicaciones que cree en Power Apps funcionan mucho como Excel. En lugar de actualizar las celdas, se agregan controles en cualquier parte de una pantalla y se les asigna un nombre para usarlos en fórmulas.

Por ejemplo, puede copiar el comportamiento de Excel en una aplicación agregando un control Label denominado Label1 y dos controles de entrada de textodenominados TextInput1 y TextInput2. Si establece la propiedad Text de Label1 en TextInput1 + TextInput2, siempre se muestra la suma de los números en TextInput1 y TextInput2 automáticamente.

Calcular la suma de dos números en Power Apps.

Tenga en cuenta que el control Label1 está seleccionado y muestra su fórmula Text en la barra de fórmulas en la parte superior de la pantalla. La fórmula TextInput1 + TextInput2 crea una dependencia entre estos controles, al igual que las dependencias entre las celdas de un libro de Excel. Vamos a cambiar el valor de TextInput1:

Animación del cálculo de la suma de dos números en Power Apps.

La fórmula de Label1 recalcula automáticamente y muestra el nuevo valor.

En Power Apps, se usan fórmulas para establecer no solo el valor principal de un control, sino también propiedades como el formato. En el ejemplo siguiente, una fórmula para la propiedad Color de la etiqueta muestra automáticamente valores negativos en rojo. La función If parece familiar de Excel:

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

Animación de formato condicional.

Las fórmulas se usan para muchos escenarios:

  • Cuando el GPS del dispositivo está activado, un control de mapa muestra la ubicación actual con una fórmula que usa Location.Latitude y Location.Longitude. A medida que se desplaza, el mapa sigue automáticamente su ubicación.
  • Otros usuarios actualizan orígenes de datos. Por ejemplo, otros miembros del equipo pueden actualizar los elementos de una lista. Al actualizar un origen de datos, las fórmulas dependientes se recalculan automáticamente para mostrar los datos actualizados. Por ejemplo, puede establecer la propiedad Items de una galería en la fórmula Filter( SharePointList ), que muestra automáticamente el conjunto de registros recién filtrado.

Beneficios

El uso de fórmulas para compilar aplicaciones tiene muchas ventajas:

  • Si está familiarizado con Excel, sabrá usar Power Apps. El lenguaje de fórmulas y modelos es el mismo.
  • Si ha usado otras herramientas de programación, piense en cuánto código tendría que hacer estos ejemplos. En Visual Basic, escribiría un controlador de eventos para el evento de cambio en cada control de entrada de texto. El código para hacer el cálculo en cada instancia es redundante y puede desincronizarse, o tendría que escribir una subrutina común. En Power Apps, puedes realizar todo eso con una fórmula de una sola línea.
  • Para ver de dónde procede el texto de Label1, se sabe exactamente dónde buscar: en la fórmula de la propiedad Text. No hay otra manera de cambiar el texto de este control. En una herramienta de programación tradicional, cualquier controlador de eventos o subrutina puede cambiar el valor de la etiqueta, desde cualquier lugar del programa. Esto dificulta el seguimiento de cuándo y dónde ha cambiado una variable.
  • Si cambia un control deslizante y después cambia de opinión, puede devolver el control deslizante a su valor original Es como si nunca hubiera cambiado nada: la aplicación muestra los mismos valores de control que antes. No hay consecuencias por experimentar y preguntar "qué pasaría si," al igual que en Excel.

En general, si puede hacer algo con una fórmula, es mejor. Deje que el motor de fórmulas de Power Apps trabaje por usted.

Saber cuándo usar variables

Vamos a cambiar el sumador sencillo para que actúe como una máquina de sumar antigua, con un total acumulado. Al seleccionar el botón Agregar , se agrega un número al total en ejecución. Al seleccionar el botón Borrar , restablece el total en ejecución a cero.

Pantalla Descripción
Aplicación con un control Entrada de texto, una etiqueta y dos botones. Cuando se inicia la aplicación, el total acumulado es 0.

El punto rojo representa el dedo del usuario en el cuadro de entrada de texto, donde el usuario escribe 77.
El control Entrada de texto contiene 77 y se está presionando el botón Agregar. El usuario selecciona el botón Agregar.
El total es 77 y se le está agregando otro 77. 77 se agrega al total agregado.

El usuario selecciona de nuevo el botón Agregar.
El total es 154 antes de que se borre. 77 se agrega de nuevo al total acumulado, lo que da como resultado 154.

El usuario selecciona el botón Borrar.
El total se borra. El total acumulado se restablece en 0.

Esta máquina de sumar usa algo que no existe en Excel: un botón. En esta aplicación, no puede usar solamente fórmulas para calcular el total acumulado, ya que su valor depende de una serie de acciones que realiza el usuario. En su lugar, registra y actualiza el total en ejecución manualmente. La mayoría de las herramientas de programación almacena esta información en una variable.

A veces, necesita una variable para que la aplicación se comporte de la manera que desee, pero este enfoque incluye advertencias:

  • Actualice manualmente el total acumulado. El recálculo automático no lo hace por ti.
  • El total en ejecución no se calcula en función de los valores de otros controles. Depende de cuántas veces el usuario seleccione el botón Agregar y qué valor se encuentra en el control de entrada de texto cada vez. ¿Ha especificado el usuario 77 y ha seleccionado Agregar dos veces o ha especificado 24 y 130 para cada adición? No se puede saber la diferencia después de que el total alcance 154.
  • Los cambios realizados en el total pueden provenir de diferentes acciones. En este ejemplo, los botones Agregar y Borrar actualizan el total. Si la aplicación no se comporta de la manera esperada, ¿qué botón provoca el problema?

Usar una variable global

Para crear una máquina de sumar, necesita una variable que contenga el total acumulado. Las variables más sencillas que se van a usar en Power Apps son variables globales.

Cómo funcionan las variables globales:

  • Establezca el valor de una variable global con la función Set . Set( MyVar, 1 ) establece la variable global MyVar en un valor de 1.
  • Use la variable global haciendo referencia al nombre usado con la función Set . En este caso, MyVar devuelve 1.
  • Las variables globales pueden contener cualquier valor, como cadenas, números, registros y tablas.

Reconstruya la máquina de adición mediante una variable global.

  1. Agregue un control de entrada de texto denominado TextInput1 y dos botones denominados Button1 y Button2.

  2. Establezca la propiedad Text de Button1 en "Agregar" y la propiedad Text de Button2 en "Borrar".

  3. Para actualizar el total en ejecución cuando un usuario selecciona el botón Agregar , establezca su propiedad OnSelect en esta fórmula:

    Set( RunningTotal, RunningTotal + TextInput1 )

    Esta fórmula crea RunningTotal como una variable global que contiene un número debido al + operador . Haga referencia a RunningTotal en cualquier parte de la aplicación. Cuando el usuario abre la aplicación, RunningTotal tiene un valor inicial en blanco.

    La primera vez que un usuario selecciona el botón Agregar y Set se ejecuta, RunningTotal se establece en el valor RunningTotal + TextInput1.

    Captura de pantalla de la propiedad OnSelect del botón Agregar establecido en la función Set.

  4. Para establecer el total de ejecución en 0 cuando el usuario selecciona el botón Borrar , establezca su propiedad OnSelect en esta fórmula:

    Set( RunningTotal, 0 )

    Captura de pantalla de la propiedad OnSelect del botón Borrar establecido en la función Set.

  5. Agregue un control Etiqueta y establezca su propiedad Text en RunningTotal.

    Esta fórmula recalcula automáticamente y muestra al usuario el valor de RunningTotal a medida que cambia en función de los botones que selecciona el usuario.

    Captura de pantalla de la propiedad Text de la etiqueta establecida en el nombre de la variable.

  6. Obtenga una vista previa de la aplicación. Escriba un número en el cuadro de texto y seleccione el botón Agregar varias veces. Cuando esté listo, vuelva a la experiencia de creación mediante la clave Esc .

    Captura de pantalla del control de entrada de texto con un valor y la etiqueta con el total en ejecución.

  7. Para mostrar el valor de la variable global, seleccione Variables en el menú de creación de aplicaciones.

    Captura de pantalla del menú Variables y colecciones.

  8. Para mostrar todos los lugares donde se define y se usa la variable, selecciónela en Variables globales.

    Captura de pantalla de la lista de ubicaciones donde se usa la variable.

Tipos de variables

Power Apps tiene tres tipos de variables:

Tipo de variable Scope Descripción Funciones que establecen
Variables globales App Use variables globales para contener un número, una cadena de texto, un valor booleano, un registro, una tabla u otro valor al que haga referencia en cualquier parte de la aplicación. Set
Variables de contexto Pantalla Use variables de contexto para pasar valores a una pantalla, como parámetros en otros lenguajes. Puedes referirte a ellos desde una sola pantalla. UpdateContext
Navigate
Recopilaciones App Use colecciones para almacenar una tabla a la que haga referencia en cualquier lugar de la aplicación. Puede cambiar el contenido de la tabla y guardarlo en el dispositivo local para su uso posterior. Collect
ClearCollect

Crear y quitar variables

Las variables se crean implícitamente cuando aparecen en una función Set, UpdateContext, Navigate, Collect o ClearCollect . Para declarar una variable y su tipo, solo tiene que incluirla en cualquiera de estas funciones en cualquier parte de la aplicación. Estas funciones no crean variables; solo rellenan variables con valores. Nunca se declaran variables explícitamente como se haría en otra herramienta de programación, y todo lo que se escribe es implícito desde el uso.

Por ejemplo, podría tener un control de botón con una fórmula OnSelect igual a Set (X, 1 ). Esta fórmula establece X como variable con un tipo de número. Usa X en fórmulas como un número y esa variable tiene un valor de blanco después de abrir la aplicación, pero antes de seleccionar el botón. Cuando se selecciona el botón, se asigna a X el valor de 1.

Si agrega otro botón y establece su propiedad OnSelect en Set( X, "Hello" ), se produce un error porque el tipo (cadena de texto) no coincide con el tipo del conjunto anterior (número). Todas las definiciones implícitas de la variable deben estar de acuerdo en el tipo. De nuevo, todo esto sucede porque menciona X en fórmulas, no porque ninguna de esas fórmulas se ejecuta realmente.

Quite una variable quitando todas las funciones Set, UpdateContext, Navigate, Collect o ClearCollect que establecen implícitamente la variable. Sin estas funciones, la variable no existe. Quite también las referencias a la variable porque provocan un error.

Duración de la variable y valor inicial

Las variables permanecen en memoria mientras se ejecuta la aplicación. Cuando se cierra la aplicación, se pierden los valores de las variables.

Almacene el contenido de una variable en un origen de datos mediante las funciones Patch o Collect . Almacene valores en colecciones en el dispositivo local mediante la función SaveData .

Cuando el usuario abre la aplicación, todas las variables comienzan con un valor inicial en blanco.

Leer variables

Use el nombre de la variable para leer su valor. Por ejemplo, defina una variable con esta fórmula:

Set( Radius, 12 )

A continuación, use Radius en cualquier lugar donde use un número y se reemplaza por 12:

Pi() * Power( Radius, 2 )

Si asigna a una variable de contexto el mismo nombre que una variable global o una colección, la variable de contexto tiene prioridad. Puede hacer referencia a la variable global o colección mediante el operador de desambiguación[@Radius].

Nombres de variables reservadas

No use ninguno de los siguientes nombres de variable. Estos nombres son propiedades de la aplicación y usarlos pueden provocar colisiones de nombres de variable que dan lugar a un comportamiento inesperado de la aplicación.

  • ActiveScreen
  • DesignHeight
  • DesignWidth
  • Height
  • MinScreenHeight
  • MinScreenWidth
  • SizeBreakpoints
  • StudioVersion
  • TestCaseId
  • Pruebas
  • TestSuiteId
  • Theme
  • Anchura

Usar una variable de contexto

Veamos cómo se crea una máquina de adición mediante una variable de contexto en lugar de una variable global.

Funcionamiento de las variables de contexto

  • Puede establecer implícitamente variables de contexto mediante la función UpdateContext o Navigate. Cuando se inicia la aplicación, el valor inicial de cada variable de contexto está en blanco.
  • Las variables de contexto se actualizan con registros. En otras herramientas de programación, normalmente se usa "=" para la asignación, como "x = 1". En el caso de las variables de contexto, se usa { x: 1 } en su lugar . Cuando use una variable de contexto, use su nombre directamente sin la sintaxis de registro.
  • También puede establecer una variable de contexto al usar la función Navigate para mostrar una pantalla. Si piensa en una pantalla como un tipo de procedimiento o subrutina, este enfoque se asemeja al paso de parámetros en otras herramientas de programación.
  • Excepto en el caso de Navigate, las variables de contexto están limitadas al contexto de una sola pantalla, que es donde obtienen su nombre. No se pueden usar ni establecer fuera de este contexto.
  • Las variables de contexto pueden contener cualquier valor, como cadenas, números, registros y tablas.

Reconstruya la máquina de sumar mediante una variable de contexto:

  1. Agregue un control de entrada de texto, denominado TextInput1, y dos botones, denominados Button1 y Button2.

  2. Establezca la propiedad Text de Button1 en "Agregar" y la propiedad Text de Button2 en "Borrar".

  3. Para actualizar el total acumulado cada vez que un usuario seleccione el botón Agregar, establezca su propiedad OnSelect en esta fórmula:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    Esta fórmula establece RunningTotal como una variable de contexto que contiene un número debido al + operador . Hace referencia a RunningTotal en cualquier parte de esta pantalla. Cuando el usuario abre la aplicación, RunningTotal tiene un valor inicial en blanco.

    La primera vez que el usuario selecciona el botón Agregar y se ejecuta UpdateContext , RunningTotal se establece en el valor RunningTotal + TextInput1.

    Propiedad OnSelect del botón Agregar con updatecontext.

  4. Para establecer el total acumulado en 0 cada vez que el usuario seleccione el botón Borrar, establezca su propiedad OnSelect en esta fórmula:

    UpdateContext( { RunningTotal: 0 } )

    De nuevo, use UpdateContext con la fórmula UpdateContext( { RunningTotal: 0 } ).

    Propiedad OnSelect del botón Borrar con updatecontext.

  5. Agregue un control Etiqueta y establezca su propiedad Text en RunningTotal.

    Esta fórmula se recalculará automáticamente y mostrará al usuario el valor de RunningTotal cuando cambie en función de los botones que el usuario seleccione.

    Propiedad de texto de la etiqueta.

  6. Obtenga una vista previa de la aplicación. Escriba un número en el cuadro de texto y seleccione el botón Agregar varias veces. Cuando esté listo, vuelva a la experiencia de creación mediante la clave Esc .

    El control de entrada Text muestra un valor y la etiqueta muestra el total acumulado.

  7. Establezca el valor de una variable de contexto mientras navega a una pantalla para pasar "contexto" o "parámetros" de una pantalla a otra. Para mostrar esta técnica, inserte una pantalla, inserte un botón y establezca su propiedad OnSelect en esta fórmula:

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

    Propiedad OnSelect de un botón.

    Mantenga presionada la tecla Alt mientras selecciona este botón para mostrar Screen1 y establezca la variable de contexto RunningTotal en -1000.

    Screen1 está abierto.

  8. Para mostrar el valor de la variable de contexto, realice una de las siguientes acciones:

    • Si está utilizando la versión preliminar de Power Apps Studio, seleccione Variables en el menú de creación de la aplicación.

    • Si usa la versión clásica de Power Apps Studio, seleccione el menú Archivo y, a continuación, seleccione Variables en el panel izquierdo.

  9. Para mostrar dónde se define y se usa la variable de contexto, selecciónela en Variables de contexto.

Usar una colección

Vamos a crear una máquina sumadora mediante una colección. Dado que una colección contiene una estructura de datos que es fácil de modificar, esta máquina de suma mantiene una "cinta de papel" de cada valor a medida que lo introduces.

Cómo funcionan las colecciones

  • Para crear y establecer colecciones, use la función ClearCollect. Puede usar la función Collect en su lugar, pero requiere otra variable en lugar de reemplazar la antigua.
  • Una colección es un tipo de origen de datos y una tabla. Para obtener un valor único en una colección, use la función First y obtenga un campo del registro resultante. Si usa un valor único con ClearCollect, este es el campo Valor , como en este ejemplo:
    First(VariableName).Value

Cree una máquina de adición mediante una colección:

  1. Agregue un control Entrada de texto, denominado TextInput1, y dos botones, denominados Button1 y Button2.

  2. Establezca la propiedad Text de Button1 en "Agregar" y la propiedad Text de Button2 en "Borrar".

  3. Para actualizar el total acumulado cada vez que un usuario seleccione el botón Agregar, establezca su propiedad OnSelect en esta fórmula:

    Recopilar( PaperTape, TextInput1.Text )

    La mera existencia de esta fórmula establece PaperTape como una colección que contiene una tabla de cadenas de texto de una sola columna. Puede hacer referencia a PaperTape en cualquier parte de esta aplicación. Cada vez que un usuario abre esta aplicación, PaperTape es una tabla vacía.

    Cuando se ejecuta esta fórmula, agrega el nuevo valor al final de la colección. Dado que estamos agregando un solo valor, Collect lo coloca automáticamente en una tabla de una sola columna y el nombre de la columna es Value, que usará más adelante.

    Propiedad OnSelect del botón Agregar con collect.

  4. Para borrar el registro cada vez que el usuario seleccione el botón Borrar, establezca su propiedad OnSelect en esta fórmula:

    Clear( PaperTape )

    Propiedad ![OnSelect del but1 Borrar. Para ejecutar la máquina de adición, seleccione F5 para abrir vista previa, escriba números en el control de entrada de texto y seleccione botones.

    Captura de pantalla del control de entrada de texto que muestra un valor y la etiqueta que muestra el total acumulado. label.](media/working-with-variables/papertape-3.png)

  5. Para ejecutar la máquina de sumar, presione F5 para abrir la vista previa, escriba números en el control de entrada de texto y seleccione botones.

    El control Entrada de texto muestra un valor y la etiqueta muestra el total acumulado.

  6. Para volver al área de trabajo predeterminada, seleccione Esc.

  7. Para mostrar la cinta de papel, inserte un control Tabla de datos y establezca sus **[Elementos](controls/properties1). Para ver los valores en su colección, realice una de las siguientes acciones:

    • Si usa la versión preliminar de Power Apps Studio, seleccione Variables en el menú creación de aplicaciones y, a continuación, seleccione Colecciones.

    • Si usa la versión clásica de Power Apps Studio, seleccione Colecciones en el menú Archivo . Para ver los valores en su colección, realice una de las siguientes acciones:

    • Si está utilizando la versión preliminar de Power Apps Studio, seleccione Variables en el menú de creación de la aplicación y, a continuación, Colecciones.

    • Si está utilizando la versión clásica de Power Apps Studio, seleccione Colecciones en el menú Archivo .

  8. Para almacenar y obtener la colección, agregue dos controles de botón más y establezca sus propiedades texto en Cargar y guardar. Establezca la propiedad OnSelect del botón Cargar en esta fórmula:

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

    Primero debe borrar la colección porque LoadData anexará los valores almacenados al final de la colección.

    Propiedad OnSelect del botón Cargar.

  9. Establezca la propiedad OnSelect del botón Guardar en esta fórmula:

    SaveData( PaperTape, "StoredPaperTape" )

    Propiedad OnSelect* del botón Guardar.

  10. Vuelva a obtener una vista previa seleccionando F5, escriba números en el control de entrada de texto y seleccione botones. Seleccione el botón Guardar. Cierre y vuelva a cargar la aplicación y seleccione el botón Cargar para volver a cargar la colección.

Nota

Las funciones SaveData y LoadData funcionan en Power Apps Mobile, pero no en Power Apps Studio ni el reproductor web para Power Apps.