PowerApps에서 캔버스 앱 변수 이해Understand canvas-app variables in PowerApps

Visual Basic 또는 JavaScript와 같은 다른 프로그래밍 도구를 사용한 경우 변수가 어디에 있나요? 라고 물어볼 수 있습니다.If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps는 약간 다르며 다른 접근 방식이 필요합니다.PowerApps is a little different and requires a different approach. 캔버스 앱을 빌드할 때 변수에 도달하는 대신 자신에게 Excel에서 무엇을 할 수 있나요? 라고 물어보세요.Instead of reaching for a variable when you build a canvas app, ask yourself: What would I do in Excel?

다른 도구에서는 명시적으로 계산을 수행하여 결과를 변수에 저장했습니다.In other tools, you may have explicitly performed a calculation and stored the result in a variable. 그러나 PowerApps와 Excel에서는 모두 입력 데이터가 변경될 때 수식을 자동으로 다시 계산하므로 일반적으로 변수를 만들고 업데이트할 필요가 없습니다.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. 가능한 경우 언제든지 이 방법을 사용하면 앱을 더 쉽게 만들고, 이해하고, 유지 관리할 수 있습니다.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

어떤 경우에는 동작 수식을 추가하여 Excel 모델을 확장하는 PowerApps에서 변수를 사용해야 합니다.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. 예를 들어 사용자가 단추를 선택할 때 이러한 수식이 실행됩니다.These formulas run when, for example, a user selects a button. 종종 동작 수식 내에서 다른 수식에 사용할 변수를 설정하는 것이 유용합니다.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

일반적으로 변수를 사용하지 마세요.In general, avoid using variables. 그러나 때로는 변수만 사용하여 원하는 환경을 설정할 수 있습니다.But sometimes only a variable can enable the experience you want.

Excel을 PowerApps로 변환Translate Excel into PowerApps

ExcelExcel

Excel의 작동 원리를 검토해 보겠습니다.Let's review how Excel works. 셀에는 숫자 또는 문자열과 같은 값 또는 다른 셀의 값을 기반으로 하는 수식이 포함될 수 있습니다.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. 사용자가 셀에 다른 값을 입력하면 Excel에서는 새 값에 종속된 모든 수식을 자동으로 다시 계산합니다.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. 이 동작을 프로그래밍하여 사용하도록 설정할 필요가 없습니다.You don't have to do any programming to enable this behavior.

Excel에서는 변수를 사용하지 않습니다.Excel doesn't have variables. 수식이 포함된 셀의 값은 입력에 따라 변경되지만 수식의 결과를 기억하고 셀이나 다른 위치에 저장할 방법이 없습니다.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. 셀의 값을 변경하면 전체 스프레드시트가 변경되고 이전에 계산된 값이 손실될 수 있습니다.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Excel 사용자는 셀을 복사하여 붙여넣을 수 있고 직접 제어할 수 있지만, 수식으로는 가능하지 않습니다.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

PowerApps에서 만드는 앱은 Excel과 매우 비슷하게 작동합니다.Apps that you create in PowerApps behave very much like Excel. 셀을 업데이트하는 대신 화면에 원하는 위치에 컨트롤을 추가하고 수식에 사용할 컨트롤의 이름을 지정할 수 있습니다.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

예를 들어TextBox1이라는 레이블 컨트롤과 TextInput1TextInput2라는 2개의 텍스트 입력 컨트롤을 추가하여 앱에서 Excel 동작을 복제할 수 있습니다.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. 그런 다음 TextBox1Text 속성을 TextInput1 + TextInput2로 설정하면 항상 TextInput1TextInput2에 있는 숫자의 합계를 자동으로 표시합니다.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.

TextBox1 컨트롤을 선택하면 화면 위쪽의 수식 입력줄에서 Text 수식이 표시됩니다.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. 여기서 TextInput1 + TextInput2 수식을 찾습니다.Here we find the formula TextInput1 + TextInput2. 이 수식은 Excel 통합 문서에서 셀 간에 종속성을 만든 것처럼 이러한 컨트롤 간에 종속성을 만듭니다.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. TextInput1의 값을 변경해 보겠습니다.Let's change the value of the TextInput1:

TextBox1에 대한 수식이 자동으로 다시 계산되어 새 값이 표시됩니다.The formula for TextBox1 has been automatically recalculated, showing the new value.

PowerApps에서 수식을 사용하여 컨트롤의 기본값뿐만 아니라 서식과 같은 속성도 결정할 수 있습니다.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. 다음 예제에서 레이블의 Color 속성에 대한 수식은 자동으로 음수 값을 빨간색으로 표시합니다.In the next example, a formula for the Color property of the label will automatically show negative values in red. If 함수는 Excel과 매우 친숙해야 합니다.The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

이제 TextBox1.Text의 계산 결과가 음수이면 숫자가 빨간색으로 표시됩니다.Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

다음과 같은 다양한 시나리오에 수식을 사용할 수 있습니다.You can use formulas for a wide variety of scenarios:

  • 장치의 GPS를 사용하면 지도 컨트롤에서 Location.LatitudeLocation.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. 이동하는 대로 지도에서 내 위치를 자동으로 추적합니다.As you move, the map will automatically track your location.
  • 다른 사용자가 데이터 원본을 업데이트할 수 있습니다.Other users can update data sources. 예를 들어 팀의 다른 구성원이 SharePoint 목록의 항목을 업데이트할 수 있습니다.For example, others on your team might update items in a SharePoint list. 데이터 원본을 새로 고치면 종속된 모든 수식이 업데이트된 데이터를 반영하도록 자동으로 다시 계산됩니다.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. 예를 들어 Filter( SharePointList ) 수식에 갤러리의 Items 속성을 설정하여 새로 필터링된 레코드 집합을 자동으로 표시할 수 있습니다.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.

혜택Benefits

수식을 사용하여 앱을 빌드하면 다음과 같은 많은 이점이 있습니다.Using formulas to build apps has many advantages:

  • Excel을 알고 있으면 PowerApps도 알 수 있습니다.If you know Excel, you know PowerApps. 모델과 수식 언어가 동일하기 때문입니다.The model and formula language are the same.
  • 다른 프로그래밍 도구를 사용했으면 이러한 예제를 수행하는 데 필요한 코드의 양을 생각하면 됩니다.If you've used other programming tools, think about how much code would be required to accomplish these examples. Visual Basic에서는 각 텍스트 입력 컨트롤에 변경 이벤트에 대한 이벤트 처리기를 작성해야 합니다.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. 이러한 컨트롤 각각에서 계산을 수행하는 코드가 중복되고 동기화되지 못하거나 일반적인 서브루틴을 작성해야 합니다.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. PowerApps에서는 단 한 줄의 수식으로 이러한 모든 작업을 수행합니다.In PowerApps, you accomplished all of that with a single, one-line formula.
  • TextBox1의 텍스트가 제공되는 위치를 이해하려면 찾으려는 위치, 즉 Text 속성의 수식을 정확히 알아야 합니다.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. 이 컨트롤의 텍스트에 영향을 줄 수 있는 다른 방법은 없습니다.There's no other way to affect the text of this control. 기존의 프로그래밍 도구에서 모든 이벤트 처리기 또는 서브루틴은 프로그램의 모든 위치에서 레이블의 값을 변경할 수 있습니다.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. 이로 인해 변수가 언제 어디서 변경되었는지 추적하기가 어려워질 수 있습니다.This can make it hard to track down when and where a variable was changed.
  • 사용자가 슬라이더 컨트롤을 변경한 다음 생각을 바꾸면 슬라이더를 원래 값으로 다시 변경할 수 있습니다.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. 그러면 마치 아무 것도 변경되지 않은 것처럼 됩니다. 즉 앱에서 이전과 동일한 컨트롤 값을 표시합니다.And it's as if nothing had ever changed: the app shows the same control values as it did before. Excel에서 아무 효과가 없는 것처럼 "what if"를 실험하고 요청하는 것에 대해 아무 효과가 없습니다.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

일반적으로 수식을 사용하여 결과를 얻을 수 있는 경우가 더 효과적입니다.In general, if you can achieve an effect by using a formula, you'll be better off. PowerApps에서 수식 엔진을 사용하여 작업해 보겠습니다.Let the formula engine in PowerApps work for you.

변수를 사용하는 경우 확인Know when to use variables

구식의 계산기처럼 작동하도록 단순한 가산기를 누계로 변경해 보겠습니다.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. 추가 단추를 선택하는 경우 누계에 숫자를 추가합니다.If you select an Add button, you'll add a number to the running total. 지우기 단추를 선택하는 경우 누계를 0으로 다시 설정합니다.If you select a Clear button, you'll reset the running total to zero.

계산기는 Excel에 존재하지 않는 단추를 사용합니다.Our adding machine uses something that doesn't exist in Excel: a button. 이 앱에서는 사용자가 수행하는 일련의 작업에 따라 값이 달라지므로 수식만으로는 누계를 계산할 수 없습니다.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. 대신 누계를 수동으로 기록하고 업데이트해야 합니다.Instead, our running total must be recorded and updated manually. 대부분의 프로그래밍 도구에서는 이 정보를 변수에 저장합니다.Most programming tools store this information in a variable.

앱이 원하는 방식으로 작동하도록 변수가 필요할 수도 있습니다.You'll sometimes need a variable for your app to behave the way you want. 그러나 이 방법에는 다음과 같은 주의 사항이 있습니다.But the approach comes with caveats:

  • 누계를 수동으로 업데이트해야 합니다.You must manually update the running total. 자동 다시 계산을 수행하지 않습니다.Automatic recalculation won't do it for you.
  • 누계는 더 이상 다른 컨트롤의 값을 기준으로 계산되지 않습니다.The running total can no longer be calculated based on the values of other controls. 사용자가 추가 단추를 선택한 횟수와 매번 텍스트 입력 컨트롤에 있던 값에 따라 누계가 달라집니다.It depends on how many times the user selected the Add button and what value was in the text-input control each time. 사용자가 77을 입력하고 추가를 두 번 추가했나요? 아니면 각 추가에 대해 24와 130을 지정했나요?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? 합계가 154에 도달한 후에는 그 차이를 알 수 없습니다.You can't tell the difference after the total has reached 154.
  • 합계에 대한 변경은 다른 경로에서 제공될 수 있습니다.Changes to the total can come from different paths. 이 예제에서는 추가지우기 단추 모두에서 합계를 업데이트할 수 있습니다.In this example, both the Add and Clear buttons can update the total. 앱이 예상대로 작동하지 않으면 문제의 원인이 되는 단추는 무엇일까요?If the app doesn't behave the way you expect, which button is causing the problem?

전역 변수 만들기Create a global variable

계산기를 만들려면 누계를 보유할 변수가 필요합니다.To create our adding machine, we require a variable to hold the running total. PowerApps에서 사용할 가장 간단한 변수는 전역 변수입니다.The simplest variables to work with in PowerApps are global variables.

전역 변수의 작동 방식은 다음과 같습니다.How global variables work:

  • Set 함수를 사용하여 전역 변수의 값을 설정합니다.You set the value of the global variable with the Set function. Set( MyVar, 1 )MyVar 전역 변수를 1의 값으로 설정합니다.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Set 함수와 함께 사용할 이름을 참조하여 전역 변수를 사용합니다.You use the global variable by referencing the name used with the Set function. 이 경우 MyVar1을 반환합니다.In this case, MyVar will return 1.
  • 전역 변수에는 문자열, 숫자, 레코드 및 테이블을 포함한 모든 값이 포함될 수 있습니다.Global variables can hold any value, including strings, numbers, records, and tables.

전역 변수를 사용하여 계산기를 다시 빌드해 보겠습니다.Let's rebuild our adding machine by using a global variable:

  1. TextInput1이라는 텍스트 입력 컨트롤과 Button1Button2라는 두 개의 단추를 추가합니다.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text 속성을 "추가" 로 설정하고, Button2Text 속성을 "지우기" 로 설정합니다.Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. 사용자가 추가 단추를 선택할 때마다 누계를 업데이트하려면 OnSelect 속성을 다음 수식으로 설정합니다.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 )

    사용자가 처음으로 추가 단추를 선택하고 Set 이 호출되면 RunningTotal이 기본값인 '공백'으로 만들어집니다.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. 또한 이는 0으로 처리됩니다.In the addition, it will be treated as a zero.

  4. 사용자가 지우기 단추를 선택할 때마다 누계를 0으로 설정하려면 OnSelect 속성을 다음 수식으로 설정합니다.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. 레이블 컨트롤을 추가하고 Text 속성을 RunningTotal로 설정합니다.Add a Label control, and set its Text property to RunningTotal.

    이 수식은 자동으로 다시 계산되며, 사용자가 선택하는 단추에 따라 변경될 때 사용자에게 RunningTotal 값을 표시합니다.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. 앱을 미리 보면 위에서 설명한 대로 계산기가 있습니다.Preview the app, and we have our adding machine as described above. 텍스트 상자에서 숫자를 입력하고 추가 단추를 몇 번 누릅니다.Enter a number in the text box and press the Add button a few times. 준비가 되면 Esc 키를 사용하여 제작 환경으로 돌아갑니다.When ready, return to the authoring experience using the Esc key.

  7. 전역 변수의 값을 확인하려면 파일 메뉴를 선택하고 왼쪽 창에서 변수를 선택합니다.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. 변수가 정의되고 사용되는 모든 위치를 보려면 해당 변수를 선택합니다.To see all the places where our variable is defined and used, select it.

변수 유형Types of variables

PowerApps에는 다음과 같은 세 가지 유형의 변수가 있습니다.There are three types of variables in PowerApps:

변수 유형Variables type 범위Scope 설명Description FunctionsFunctions
전역 변수Global variables App 사용이 가장 간편합니다.Simplest to use. 앱의 모든 위치에서 참조할 수 있는 숫자, 텍스트 문자열, 부울, 레코드, 테이블 등을 보유합니다.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
컨텍스트 변수Context variables 화면Screen 다른 언어의 프로시저에 대한 매개 변수와 마찬가지로 화면에 값을 전달하는 데 매우 유용합니다.Great for passing values to a screen, much like parameters to a procedure in other languages. 한 화면에서만 참조할 수 있습니다.Can only be referenced from one screen. UpdateContextUpdateContext
컬렉션Collections App 앱의 모든 위치에서 참조할 수 있는 테이블을 보유합니다.Holds a table that can be references from anywhere in the app. 테이블의 내용을 전체적으로 설정하지 않고 수정할 수 있습니다.Allows the contents of the table to be modified rather than being set as a whole. 나중에 사용하기 위해 로컬 장치에 저장할 수 있습니다.Can be saved to the local device for later use. CollectCollect
etc.

Set, UpdateContext, Navigate 또는 Collect 함수를 사용할 때 모든 변수가 암시적으로 만들어집니다.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. 다른 프로그래밍 도구에서 수행되는 것과 같이 변수에 대한 명시적 선언이 없습니다.There is no explicit declaration of variables as is done in other programming tools. 또한 변수 유형은 변수에 배치된 값에서 암시적으로 파생됩니다.The types of the variables are also derived implicitly from the values that are placed in them.

모든 변수는 앱이 실행되는 동안 메모리에서 유지됩니다.All variables are held in memory while the app is running. 앱을 닫으면 변수에 보유된 값이 손실됩니다.After the app closes, the values held in the variables are lost. Patch 또는 Collect 함수를 사용하여 데이터 원본에 변수의 내용을 저장하거나, 컬렉션의 경우 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. 앱을 처음 로드하는 경우 모든 변수에 '공백' 값이 있습니다.When the app is first loaded, all variables will have the blank value.

변수 이름을 사용하여 해당 값을 읽습니다.You use the variables name to read its value. 예를 들어 Set( MyColor, Red ) 로 정의된 경우 색상 값을 사용할 수 있는 곳이면 어디서든 MyVar를 간단히 사용할 수 있으며 Red로 바뀝니다.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. 컨텍스트 변수와 이름이 같은 전역 변수 또는 컬렉션을 사용할 수 있습니다.It is possible to have a global variable or collection with the same name as a context variable. 이 경우 컨텍스트 변수가 우선 적용됩니다.In this case, the context variable will take precedence. @[MyColor] 명확성 연산자를 사용하여 전역 변수 또는 컬렉션을 계속 참조할 수 있습니다.You can still reference the global variable or collection using the disambiguation operator @[MyColor].

컨텍스트 변수 만들기Create a context variable

전역 변수 대신 컨텍스트 변수를 사용하여 계산기를 만드는 방법을 살펴보겠습니다.Let's look at how our adding machine would be created using a context variable instead of a global variable.

컨텍스트 변수의 작동 방식은 다음과 같습니다.How context variables work:

  • UpdateContext 함수를 사용하여 컨텍스트 변수를 만들고 설정합니다.You create and set context variables by using the UpdateContext function. 컨텍스트 변수가 처음 업데이트될 때 아직 존재하지 않으면 기본값인 '공백'으로 만들어집니다.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • 컨텍스트 변수를 만들고 레코드로 업데이트합니다.You create and update context variables with records. 다른 프로그래밍 도구에서는 일반적으로 "x = 1"에서와 같이 할당에 "="를 사용합니다.In other programming tools, you commonly use "=" for assignment, as in "x = 1". 컨텍스트 변수의 경우 { x: 1 } 을 대신 사용합니다.For context variables, use { x: 1 } instead. 컨텍스트 변수를 사용하는 경우 해당 이름을 직접 사용합니다.When you use a context variable, use its name directly.
  • Navigate 함수를 사용하여 화면이 표시될 때 컨텍스트 변수를 설정할 수도 있습니다.You can also set a context variable when a screen is displayed, by using the Navigate function. 화면이 일종의 프로시저 또는 서브루틴으로 간주되면 다른 프로그래밍 도구에서 전달하는 매개 변수와 비슷합니다.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • Navigate 를 제외하고 컨텍스트 변수는 단일 화면의 컨텍스트로 제한되며, 여기에서 컨텍스트 변수의 이름을 얻습니다.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. 이 컨텍스트 외부에서는 사용하거나 설정할 수 없습니다.You can't use or set them outside of this context.
  • 컨텍스트 변수에는 문자열, 숫자, 레코드 및 테이블을 포함한 모든 값이 포함될 수 있습니다.Context variables can hold any value, including strings, numbers, records, and tables.

컨텍스트 변수를 사용하여 계산기를 다시 빌드해 보겠습니다.Let's rebuild our adding machine by using a context variable:

  1. TextInput1이라는 텍스트 입력 컨트롤과 Button1Button2라는 두 개의 단추를 추가합니다.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text 속성을 "추가" 로 설정하고, Button2Text 속성을 "지우기" 로 설정합니다.Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. 사용자가 추가 단추를 선택할 때마다 누계를 업데이트하려면 OnSelect 속성을 다음 수식으로 설정합니다.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 } )

    사용자가 처음으로 추가 단추를 선택하고 UpdateContext 가 호출되면 RunningTotal이 기본값인 '공백'으로 만들어집니다 .The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. 또한 이는 0으로 처리됩니다.In the addition, it will be treated as a zero.

  4. 사용자가 지우기 단추를 선택할 때마다 누계를 0으로 설정하려면 OnSelect 속성을 다음 수식으로 설정합니다.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 } )

    다시 말하지만 UpdateContextUpdateContext( { RunningTotal: 0 } ) 수식과 함께 사용됩니다.Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. 레이블 컨트롤을 추가하고 Text 속성을 RunningTotal로 설정합니다.Add a Label control, and set its Text property to RunningTotal.

    이 수식은 자동으로 다시 계산되며, 사용자가 선택하는 단추에 따라 변경될 때 사용자에게 RunningTotal 값을 표시합니다.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. 앱을 미리 보면 위에서 설명한 대로 계산기가 있습니다.Preview the app and we have our adding machine as described above. 텍스트 상자에서 숫자를 입력하고 추가 단추를 몇 번 누릅니다.Enter a number in the text box and press the Add button a few timnes. 준비가 되면 Esc 키를 사용하여 제작 환경으로 돌아갑니다.When ready, return to the authoring experience using the Esc key.

  7. 화면을 이동하면서 컨텍스트 변수의 값을 설정할 수 있습니다.You can set the value of a context variable while navigating to a screen. 이 경우 한 화면에서 다른 화면으로 "컨텍스트" 또는 "매개 변수"를 전달할 때 유용합니다.This is useful for passing "context" or "parameters" from one screen to another. 이를 확인하려면 새 화면을 삽입하고 OnSelect 속성이 다음과 같이 설정된 단추를 삽입합니다.To see this, insert a new screen, and insert a button with the OnSelect property set to:

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

    Screen2에서 이 단추를 선택하면(끝 방향으로 단추를 선택하면 제작 중에 수행할 수 있음), Screen1이 표시되고 RunningTotal 컨텍스트 변수도 -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. 컨텍스트 변수의 값을 확인하려면 파일 메뉴를 선택하고 왼쪽 창에서 변수를 선택합니다.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. 컨텍스트 변수가 정의되고 사용되는 위치를 보려면 해당 컨텍스트 변수를 선택합니다.To see where your context variable is defined and used, select it.

컬렉션 만들기Create a collection

마지막으로 컬렉션을 사용하여 계산기를 만드는 방법을 살펴보겠습니다.Finally, let's look at creating our adding machine with a collection. 컬렉션에는 수정하기 쉬운 테이블이 있으므로 이 계산기에서는 "종이 테이프"의 각 값이 입력되는 대로 유지하게 됩니다.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.

컬렉션의 작동 방식은 다음과 같습니다.How collections work:

  • ClearCollect 함수를 사용하여 컬렉션을 만들고 설정합니다.Create and set collections by using the ClearCollect function. Collect 함수를 대신 사용할 수 있지만, 실질적으로 이전 변수를 바꾸는 대신 다른 변수가 필요합니다.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • 컬렉션은 일종의 데이터 원본이며, 따라서 테이블입니다.A collection is a kind of data source and, therefore, a table. 컬렉션의 단일 값에 액세스하려면 First 함수를 사용하고 결과 레코드에서 하나의 필드를 추출합니다.To access a single value in a collection, use the First function, and extract one field from the resulting record. ClearCollect 에서 단일 값을 사용한 경우 이 예제와 같이 Value 필드가 됩니다.If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

컬렉션을 사용하여 계산기를 다시 만들어 보겠습니다.Let's recreate our adding machine by using a collection:

  1. TextInput1이라는 텍스트 입력 컨트롤과 Button1Button2라는 두 개의 단추를 추가합니다.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text 속성을 "추가" 로 설정하고 Button2Text 속성을 "지우기" 로 설정합니다.Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. 사용자가 추가 단추를 선택할 때마다 누계를 업데이트하려면 OnSelect 속성을 다음 수식으로 설정합니다.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 )

    이 수식은 컬렉션의 끝에 새 값을 추가합니다.This formula will add the new value to the end of the collection. 하나의 값을 추가하므로 Collect는 나중에 사용할 이라는 열 이름이 있는 단일 열 테이블에 자동으로 배치됩니다.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. 사용자가 지우기 단추를 선택할 때 '종이 테이프'를 지우려면 OnSelect 속성을 다음 수식으로 설정합니다:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. 누계를 표시하려면 레이블을 추가하고, Text 속성을 다음 수식으로 설정합니다.To display the running total, add a label, and set its Text property to this formula:

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

  6. 계산기를 실행하려면 F5 키를 눌러 미리 보기를 열고, 텍스트 입력 컨트롤에 숫자를 입력한 다음, 단추를 선택합니다.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. 기본 작업 영역으로 돌아가려면 Esc 키를 누릅니다.To return to the default workspace, press the Esc key.

  8. '종이 테이프'를 표시하려면 데이터 테이블 컨트롤을 삽입하고, Items 속성을 다음 수식으로 설정합니다.To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    오른쪽 창에서 표시할 열도 선택해야 합니다. 이 경우 열이 표시됩니다.You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. 컬렉션의 값을 확인하려면 파일 메뉴에서 컬렉션을 선택합니다.To see the values in your collection, select Collections on the File menu.

  10. 컬렉션을 저장하고 검색하려면 두 개의 단추 컨트롤을 더 추가하고 해당 텍스트를 로드저장으로 설정합니다.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. 로드의 경우 OnSelect 속성을 다음과 같이 설정합니다.For Load, set the OnSelect property to:

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

    LoadData는 저장된 값을 컬렉션의 끝에 추가하므로 먼저 컬렉션을 지워야 합니다.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. 저장의 경우 OnSelect 속성을 다음과 같이 설정합니다.For Save, set the OnSelect property to:

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

  12. F5 키를 눌러 다시 한 번 미리 보고, 텍스트 입력 컨트롤에서 숫자를 입력하고, 단추를 선택합니다.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. 저장 단추를 선택합니다.Select the Save button. 앱을 닫고 다시 로드하고, 로드 단추를 선택하여 컬렉션을 다시 로드합니다.Close and reload your app, and select the Load button to reload your collection.

    참고

    SaveDataLoadData는 PowerApps Studio에서 작동하지 않지만 PowerApps Mobile에서는 작동합니다.SaveData and LoadData don't function in PowerApps Studio, but they do in PowerApps Mobile.