Descripción de las variables en PowerAppsUnderstand variables in PowerApps

Si ha usado otra herramienta de programación como Visual Basic o JavaScript, probablemente se pregunte: ¿dónde están las variables?If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps es ligeramente diferente y requiere otro enfoque.PowerApps is a little different and requires a different approach. En lugar de buscar una variable, pregúntese lo siguiente: ¿qué haría en Excel?Instead of reaching for a variable, ask yourself: What would I do in Excel?

En otras herramientas, lo más probable es que haya realizado explícitamente un cálculo y haya almacenado el resultado en una variable.In other tools, you may have explicitly performed a calculation and stored the result in a variable. Pero PowerApps y Excel recalculan automáticamente las fórmulas cuando los datos de entrada cambian, por lo que normalmente no tendrá que crear ni actualizar las variables.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. Si adopta este enfoque siempre que sea posible, podrá crear, comprender y mantener la aplicación más fácilmente.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

En algunos casos deberá usar variables en PowerApps, que amplía el modelo de Excel mediante la adición de fórmulas de comportamiento.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Estas fórmulas se ejecutan cuando, por ejemplo, un usuario selecciona un botón.These formulas run when, for example, a user selects a button. Dentro de una fórmula de comportamiento, a menudo resulta útil establecer una variable para su uso en otras fórmulas.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

En general debe evitar el uso de variables,In general, avoid using variables. pero a veces solo una variable puede habilitar la experiencia que busca.But sometimes only a variable can enable the experience you want.

Traducir Excel a PowerAppsTranslate Excel into PowerApps

ExcelExcel

Revisemos el funcionamiento de Excel.Let's review how Excel works. Una celda puede contener un valor, como un número o una cadena, o una fórmula basada en los valores de otras celdas.A cell can contain a value, such as a number or a string, or a formula that's based on the values of other cells. Cuando el usuario introduce un valor diferente en una celda, Excel recalcula automáticamente las fórmulas que dependen del valor nuevo.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. No hace falta realizar ningún tipo de programación para habilitar este comportamiento.You don't have to do any programming to enable this behavior.

Excel no tiene variables.Excel doesn't have variables. El valor de una celda que contiene una fórmula cambia en función de su entrada, pero no es posible recordar el resultado de una fórmula y almacenarlo en una celda o en otro lugar.The value of a cell that contains a formula changes based on its input, but there's no way to remember the result of a formula and store it in a cell or anywhere else. Si cambia el valor de una celda, toda la hoja de cálculo podría cambiar y los valores calculados previamente se perderían.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Un usuario de Excel puede copiar y pegar las celdas, pero esto depende del control manual del usuario y no es posible hacerlo con las fórmulas.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Las aplicaciones que se crean en PowerApps se comportan de una manera muy parecida a Excel.Apps that you create in PowerApps behave very much like Excel. En lugar de actualizar las celdas, puede agregar controles donde quiera en una pantalla y asignarles un nombre para usarlos en fórmulas.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Por ejemplo, puede replicar el comportamiento de Excel en una aplicación mediante la adición de un control Etiqueta, denominado TextBox1 (CuadroDeTexto1), y dos controles Entrada de texto, denominados TextInput1 (EntradaDeTexto1) y TextInput2 (EntradaDeTexto2).For example, you can replicate the Excel behavior in an app by adding a Label control, named TextBox1, and two Text input controls, named TextInput1 and TextInput2. Si después establece la propiedad Text de TextBox1 en TextInput1 + TextInput2, siempre mostrará automáticamente la suma de los números que se encuentren en TextInput1 y TextInput2.If you then set the Text property of TextBox1 to TextInput1 + TextInput2, it will always shows the sum of whatever numbers are in TextInput1 and TextInput2 automatically.

Tenga en cuenta que el control TextBox1 está seleccionado y muestra su fórmula Text en la barra de fórmulas en la parte superior de la pantalla.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Aquí se encuentra la fórmula TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Esta fórmula crea una dependencia entre estos controles, del mismo modo que se crean las dependencias entre las celdas de un libro de Excel.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Vamos a cambiar el valor de TextInput1:Let's change the value of the TextInput1:

La fórmula de TextBox1 se ha calculado automáticamente y muestra el nuevo valor.The formula for TextBox1 has been automatically recalculated, showing the new value.

En PowerApps, puede usar fórmulas para determinar no solo el valor principal de un control, sino propiedades como el formato.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. En el ejemplo siguiente, una fórmula para la propiedad Color de la etiqueta mostrará automáticamente los valores negativos en rojo.In the next example, a formula for the Color property of the label will automatically show negative values in red. El aspecto de la función If debería resultarle familiar de Excel:The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

Ahora, si el resultado del cálculo en TextBox1.Text es negativo, el número se mostrará en color rojo:Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

Puede usar fórmulas para una amplia variedad de escenarios:You can use formulas for a wide variety of scenarios:

  • Mediante el uso del GPS de su dispositivo, un control de mapa puede mostrar su ubicación actual con una fórmula que use Location.Latitude y Location.Longitude.By using your device's GPS, a map control can display your current location with a formula that uses Location.Latitude and Location.Longitude. A medida que se desplaza, el mapa seguirá automáticamente su ubicación.As you move, the map will automatically track your location.
  • Otros usuarios pueden actualizar los orígenes de datos.Other users can update data sources. Por ejemplo, otros miembros del equipo pueden actualizar los elementos de una lista de SharePoint.For example, others on your team might update items in a SharePoint list. Al actualizar un origen de datos, las fórmulas dependientes se recalculan automáticamente para que reflejen los datos actualizados.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. En este mismo ejemplo, puede establecer la propiedad Items de una galería en la fórmula Filter( SharePointList ), que mostrará automáticamente el conjunto recién filtrado de registros.Furthering the example, you might set a gallery's Items property to the formula Filter( SharePointList ), which will automatically display the newly filtered set of records.

VentajasBenefits

El uso de fórmulas para compilar aplicaciones tiene muchas ventajas:Using formulas to build apps has many advantages:

  • Si está familiarizado con Excel, sabrá usar PowerApps.If you know Excel, you know PowerApps. El lenguaje de fórmulas y modelos es el mismo.The model and formula language are the same.
  • Si ha usado otras herramientas de programación, piense en la gran cantidad de código que sería necesario para llevar a cabo estos ejemplos.If you've used other programming tools, think about how much code would be required to accomplish these examples. En Visual Basic, tendría que escribir un controlador de eventos para el evento de cambio en cada control de entrada de texto.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. El código para realizar el cálculo de cada uno de ellos es redundante y podría desincronizarse, o tendría que escribir una subrutina común.The code to perform the calculation in each of these is redundant and could get out of sync, or you'd need to write a common subroutine. En PowerApps, todo esto se consigue con una única fórmula de una línea.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Para entender de dónde viene el texto de TextBox1, sabe exactamente dónde buscar: la fórmula de la propiedad Text.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. No hay otra manera de influir en el texto de este control.There's no other way to affect the text of this 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.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. Esto puede hacer que sea difícil detectar cuándo y dónde se ha cambiado una variable.This can make it hard to track down when and where a variable was changed.
  • Si el usuario cambia un control deslizante pero después cambia de opinión, puede devolver el control deslizante a su valor originalIf the user changes a slider control and then changes their mind, they can change the slider back to its original value. y es como si nunca hubiera cambiado nada: la aplicación muestra los mismos valores de control que antes.And it's as if nothing had ever changed: the app shows the same control values as it did before. No hay repercusiones si se experimenta y se comprueba qué sucede al cambiar algo, igual que en Excel.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

En general, si puede conseguir un efecto mediante una fórmula, lo mejor es que la use.In general, if you can achieve an effect by using a formula, you'll be better off. Deje que el motor de fórmulas de PowerApps trabaje por usted.Let the formula engine in PowerApps work for you.

Saber cuándo usar variablesKnow when to use variables

Vamos a cambiar el sumador simple para que actúe como una máquina de sumar antigua, con un total acumulado.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Si selecciona el botón Sumar, sumará un número al total acumulado.If you select an Add button, you'll add a number to the running total. Si selecciona el botón Borrar, restablecerá en cero el total acumulado.If you select a Clear button, you'll reset the running total to zero.

Esta máquina de sumar usa algo que no existe en Excel: un botón.Our adding machine uses something that doesn't exist in Excel: a button. 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.In this app, you can't use only formulas to calculate the running total because its value depends on a series of actions that the user takes. El total acumulado debe registrarse y actualizarse manualmente.Instead, our running total must be recorded and updated manually. La mayoría de las herramientas de programación almacena esta información en una variable.Most programming tools store this information in a variable.

En ocasiones necesitará una variable para que la aplicación se comporte de la manera deseada,You'll sometimes need a variable for your app to behave the way you want. pero debe tener en cuenta una serie de advertencias:But the approach comes with caveats:

  • Debe actualizar manualmente el total acumulado.You must manually update the running total. El recálculo automático no lo hará por usted.Automatic recalculation won't do it for you.
  • El total acumulado ya no se puede calcular en función de los valores de otros controles.The running total can no longer be calculated based on the values of other controls. Depende del número de veces que el usuario haya seleccionado el botón Sumar y del valor que se encontrase en cada ocasión en el control de entrada de texto.It depends on how many times the user selected the Add button and what value was in the text-input control each time. ¿El usuario ha escrito 77 y ha seleccionado Sumar dos veces, o bien ha escrito 24 y 130 para cada una de las sumas?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? No es posible determinarlo una vez que el total haya alcanzado 154.You can't tell the difference after the total has reached 154.
  • Los cambios en el total pueden proceder de diferentes acciones.Changes to the total can come from different paths. En este ejemplo, tanto el botón Sumar como el botón Borrar pueden actualizar el total.In this example, both the Add and Clear buttons can update the total. Si la aplicación no se comporta de la manera esperada, ¿qué botón causa el problema?If the app doesn't behave the way you expect, which button is causing the problem?

Creación de una variable globalCreate a global variable

Para crear la máquina de sumar, necesitamos una variable que contenga el total acumulado.To create our adding machine, we require a variable to hold the running total. Las variables más sencillas para trabajar con PowerApps son las variables globales.The simplest variables to work with in PowerApps are global variables.

Cómo funcionan las variables globales:How global variables work:

  • Establezca el valor de la variable global con la función Set.You set the value of the global variable with the Set function. Set( MyVar, 1 ) establece la variable global MyVar en un valor de 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Use la variable global mediante la referencia al nombre usado con la función Set.You use the global variable by referencing the name used with the Set function. En este caso, MyVar devolverá 1.In this case, MyVar will return 1.
  • Las variables globales pueden contener cualquier valor, como cadenas, números, registros y tablas.Global variables can hold any value, including strings, numbers, records, and tables.

Vamos a recompilar la máquina de sumar mediante el uso de una variable de global:Let's rebuild our adding machine by using a global variable:

  1. Agregue un control de entrada de texto, denominado TextInput1, y dos botones, denominados Button1 y Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Establezca la propiedad Text de Button1 en "Sumar" y la propiedad Text de Button2 en "Borrar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Para actualizar el total acumulado cada vez que un usuario seleccione el botón Sumar, establezca su propiedad OnSelect en esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Set( RunningTotal, RunningTotal + Text1 )Set( RunningTotal, RunningTotal + Text1 )

    La primera vez que un usuario selecciona el botón Sumar y se llama a Set, se crea RunningTotal con un valor predeterminado en blanco.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Además, se tratará como un cero.In the addition, it will be treated as a zero.

  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:To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    Set( RunningTotal, 0 )Set( RunningTotal, 0 )

  5. Agregue un control Etiqueta y establezca su propiedad Texto en RunningTotal (TotalAcumulado).Add a Label control, and set its Text property to 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.This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

  6. Obtenga una vista previa de la aplicación y ya tiene la máquina de sumar, tal como se describió anteriormente.Preview the app, and we have our adding machine as described above. Escriba un número en el cuadro de texto y presione el botón de suma varias veces.Enter a number in the text box and press the Add button a few times. Cuando esté listo, vuelva a la experiencia de creación mediante la tecla Esc.When ready, return to the authoring experience using the Esc key.

  7. Para ver el valor de la variable global, seleccione el menú Archivo y seleccione Variables en el panel izquierdo.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Para ver todos los lugares donde se define y se usa la variable, selecciónela.To see all the places where our variable is defined and used, select it.

Tipos de variablesTypes of variables

Hay tres tipos de variables en PowerApps:There are three types of variables in PowerApps:

Tipo de variableVariables type ÁmbitoScope DescripciónDescription FunctionsFunctions
Variables globalesGlobal variables AppApp Las más sencillas de utilizar.Simplest to use. Contiene un número, una cadena de texto, un valor booleano, un registro, una tabla, etc. a los que se puede hacer referencia desde cualquier parte de la aplicación.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
Variables de contextoContext variables PantallaScreen Idóneas para pasar valores a una pantalla, de forma parecida a como se pasan los parámetros a un procedimiento en otros lenguajes.Great for passing values to a screen, much like parameters to a procedure in other languages. Solo se puede hacer referencia a ellas desde una pantalla.Can only be referenced from one screen. UpdateContextUpdateContext
NavegarNavigate
ColeccionesCollections AppApp Contiene una tabla a la que se puede hacer referencia desde cualquier lugar de la aplicación.Holds a table that can be references from anywhere in the app. Permite que el contenido de la tabla se pueda modificar en lugar de establecerla como un todo.Allows the contents of the table to be modified rather than being set as a whole. Se pueden guardar en el dispositivo local para su uso posterior.Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect
RevisiónPatch
ActualizarUpdate
RemoveRemove
SaveDataSaveData
LoadDataLoadData
etc.etc.

Todas las variables se crean implícitamente cuando se utilizan en las funciones Set, UpdateContext, Navegar o Collect.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. No hay ninguna declaración explícita de variables como se hace en otras herramientas de programación.There is no explicit declaration of variables as is done in other programming tools. Los tipos de las variables también se derivan implícitamente de los valores que se colocan en ellas.The types of the variables are also derived implicitly from the values that are placed in them.

Todas las variables se mantienen en la memoria mientras se ejecuta la aplicación.All variables are held in memory while the app is running. Una vez que se cierra la aplicación, se pierden los valores almacenados en las variables.After the app closes, the values held in the variables are lost. Puede almacenar el contenido de una variable en un origen de datos mediante las funciones Revisión o Collect, o en el caso de las colecciones, puede almacenarlo en el dispositivo local con la función SaveData.You can store the contents of a variable in a Data Source using Patch or Collect functions, or in the case of collections you can store to the local device with the SaveData function. Cuando se carga la aplicación por primera vez, todas las variables tienen el valor en blanco.When the app is first loaded, all variables will have the blank value.

Utilice el nombre de las variables para leer su valor.You use the variables name to read its value. Por ejemplo, una vez definido con Set( MyColor, Red ) solo tiene que usar MyVar en cualquier lugar en el que un valor de color se use y se reemplazará por el color rojo.For example, once defined with Set( MyColor, Red ) you can simply use MyVar anywhere a color value can be used and it will be replaced with the Red. Es posible tener una variable global o una colección con el mismo nombre que una variable de contexto.It is possible to have a global variable or collection with the same name as a context variable. En este caso, la variable de contexto tiene prioridad.In this case, the context variable will take precedence. Todavía puede hacer referencia a la variable global o a la colección mediante el operador de desambiguación @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Crear una variable de contextoCreate a context variable

Veamos cómo se crearía la máquina de sumar mediante una variable de contexto en lugar de una variable global.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Cómo funcionan las variables de contexto:How context variables work:

  • Para crear y establecer variables de contexto, se usa la función UpdateContext.You create and set context variables by using the UpdateContext function. Si una variable de contexto todavía no existe cuando se actualiza por primera vez, se creará con un valor predeterminado en blanco.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Las variables de contexto se crean y se actualizan con registros.You create and update context variables with records. En otras herramientas de programación, normalmente se usa "=" para la asignación, como en "x = 1".In other programming tools, you commonly use "=" for assignment, as in "x = 1". En el caso de las variables de contexto, se usa { x: 1 }.For context variables, use { x: 1 } instead. Cuando se usa una variable de contexto, se usa su nombre directamente.When you use a context variable, use its name directly.
  • También puede establecer una variable de contexto cuando se muestra una pantalla, mediante el uso de la función Navigate.You can also set a context variable when a screen is displayed, by using the Navigate function. Si considera una pantalla como una especie de procedimiento o subrutina, es como pasar parámetros en otras herramientas de programación.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • 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.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. No puede usarlas ni establecerlas fuera de este contexto.You can't use or set them outside of this context.
  • Las variables de contexto pueden contener cualquier valor, como cadenas, números, registros, y tablas.Context variables can hold any value, including strings, numbers, records, and tables.

Vamos a volver a compilar la máquina de sumar mediante el uso de una variable de contexto:Let's rebuild our adding machine by using a context variable:

  1. Agregue un control de entrada de texto, denominado TextInput1, y dos botones, denominados Button1 y Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Establezca la propiedad Text de Button1 en "Sumar" y la propiedad Text de Button2 en "Borrar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Para actualizar el total acumulado cada vez que un usuario seleccione el botón Sumar, establezca su propiedad OnSelect en esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    UpdateContext( { RunningTotal: RunningTotal + Text1 } )UpdateContext( { RunningTotal: RunningTotal + Text1 } )

    La primera vez que un usuario selecciona el botón Sumar y se llama a UpdateContext, se crea RunningTotal con un valor predeterminado en blanco.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Además, se tratará como un cero.In the addition, it will be treated as a zero.

  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:To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    UpdateContext( { RunningTotal: 0 } )UpdateContext( { RunningTotal: 0 } )

    Una vez más, se usa UpdateContext con la fórmula UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Agregue un control Etiqueta y establezca su propiedad Texto en RunningTotal (TotalAcumulado).Add a Label control, and set its Text property to 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.This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

  6. Obtenga una vista previa de la aplicación y ya tiene la máquina de sumar, tal como se describió anteriormente.Preview the app and we have our adding machine as described above. Escriba un número en el cuadro de texto y presione el botón de suma varias veces.Enter a number in the text box and press the Add button a few timnes. Cuando esté listo, vuelva a la experiencia de creación mediante la tecla Esc.When ready, return to the authoring experience using the Esc key.

  7. Puede establecer el valor de una variable de contexto mientras se desplaza a una pantalla.You can set the value of a context variable while navigating to a screen. Esto resulta útil a la hora de pasar "contexto" o "parámetros" de una pantalla a otra.This is useful for passing "context" or "parameters" from one screen to another. Para verlo, inserte una nueva pantalla e inserte un botón con la propiedad AlSeleccionar establecida en:To see this, insert a new screen, and insert a button with the OnSelect property set to:

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

    Si selecciona este botón en Screen2 (lo que puede hacer durante la creación si selecciona el botón situado en los extremos) aparecerá Screen1 y se establecerá también la variable de contexto RunningTotal en -1000.Selecting this button on Screen2 (which you can do while authoring if you select the button toward the ends) will show Screen1 and also set the context variable RunningTotal to -1000.

  8. Para ver el valor de la variable de contexto, seleccione el menú Archivo y seleccione Variables en el panel izquierdo.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Para ver dónde se define y se usa la variable de contexto, selecciónela.To see where your context variable is defined and used, select it.

Crear una colecciónCreate a collection

Por último, veamos cómo crear la máquina de sumar con una colección.Finally, let's look at creating our adding machine with a collection. Puesto que una colección contiene una tabla que es fácil modificar, vamos a hacer que esta máquina de sumar tenga un "registro" de todos los valores a medida que se escriben.Since a collection holds a table that is easy to modify, we will make this adding machine keep a "paper tape" of each value as they are entered.

Cómo funcionan las colecciones:How collections work:

  • Para crear y establecer colecciones, use la función ClearCollect.Create and set collections by using the ClearCollect function. También puede usar la función Collect, pero requerirá otra variable en vez de reemplazar la anterior.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • Una colección es una clase de origen de datos y, por lo tanto, una tabla.A collection is a kind of data source and, therefore, a table. Para obtener acceso a un valor único de una colección, use la función First y extraiga un campo del registro resultante.To access a single value in a collection, use the First function, and extract one field from the resulting record. Si ha usado un solo valor con ClearCollect, este será el campo Value, como en este ejemplo:If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

Vamos a recrear la máquina de sumar mediante una colección:Let's recreate our adding machine by using a collection:

  1. Agregue un control Text input, denominado TextInput1, y dos botones, denominados Button1 y Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Establezca la propiedad Text de Button1 en "Sumar" y la propiedad Text de Button2 en "Borrar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Para actualizar el total acumulado cada vez que un usuario seleccione el botón Sumar, establezca su propiedad OnSelect en esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Collect( PaperTape, TextInput1.Text )Collect( PaperTape, TextInput1.Text )

    Esta fórmula agregará el nuevo valor al final de la colección.This formula will add the new value to the end of the collection. Puesto que estamos agregando un valor único, Collect lo colocará automáticamente en una tabla de una sola columna con el nombre Valor que se utilizará más adelante.Since we are adding a single value, Collect will automatically place it in a single column table with the column name Value which we will use later.

  4. Para borrar el registro cada vez que el usuario seleccione el botón Borrar, establezca su propiedad AlSeleccionar en esta fórmula:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Para mostrar el total acumulado, agregue una etiqueta y establezca su propiedad Texto en esta fórmula:To display the running total, add a label, and set its Text property to this formula:

    Sum( PaperTape, Value )Sum( PaperTape, Value )

  6. 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.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Presione la tecla Esc para volver al área de trabajo predeterminada.To return to the default workspace, press the Esc key.
  8. Para mostrar el registro, inserte un control Tabla de datos y establezca su propiedad Items en esta fórmula:To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    También debe seleccionar las columnas que se van a mostrar en el panel derecho, en nuestro caso, vamos a mostrar la columna Valor:You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Para ver los valores de la colección, seleccione Colecciones en el menú Archivo.To see the values in your collection, select Collections on the File menu.

  10. Para almacenar y recuperar la colección, agregue dos controles de botón adicionales y establezca su texto en Cargar y Guardar.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Para Cargar, establezca la propiedad AlSeleccionar en:For Load, set the OnSelect property to:

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

    Es necesario borrar la colección primero ya que LoadData anexará los valores almacenados al final de la colección.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Para Guardar, establezca la propiedad AlSeleccionar en:For Save, set the OnSelect property to:

    SaveData( PaperTape, "StoredPaperTape" )SaveData( PaperTape, "StoredPaperTape" )

  12. Vuelva a obtener la vista previa pulsando la tecla F5, escriba números en el control de entrada de texto y seleccione botones.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Seleccione el botón Guardar.Select the Save button. Cierre y vuelva a cargar la aplicación y seleccione el botón Cargar para volver a cargar la colección.Close and reload your app, and select the Load button to reload your collection.

    Nota

    SaveData y LoadData no funcionan cuando la ejecución tiene lugar en un explorador web.SaveData and LoadData do not function when running in a web browser. Debe usar la versión Studio instalada en Windows o en uno de los reproductores para dispositivos móviles.You must be using the studio installed on Windows or one of the players for mobile devices.