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. 변수는 암시적으로 생성 되 고 해당 값을 설정 하는 함수에 표시 될 경우을 입력 합니다.Variables are implicitly created and typed when they appear in functions that set their values.

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.

다음 예제에서 A3 셀은 수식 A1 + A2로 설정됩니다.In the following example, cell A3 is set to the formula A1+A2. A1 또는 A2가 변경되면 A3는 변경 사항을 반영하도록 자동으로 다시 계산됩니다.If A1 or A2 changes, A3 automatically recalculates to reflect the change. 이 동작은 수식이 아닌 코딩을 필요로 하지 않습니다.This behavior requires no coding outside of the formula itself.

Excel에서 두 숫자의 합을 계산 하는 애니메이션

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.

예를 들어 Label1이라는 레이블 컨트롤과 TextInput1, TextInput2로 명명된 두 개의 텍스트 입력 컨트롤을 추가하여 앱에서 Excel 동작을 복제할 수 있습니다. For example, you can replicate the Excel behavior in an app by adding a Label control, named Label1, and two Text input controls, named TextInput1 and TextInput2. Label1텍스트 속성을 TextInput1 + TextInput2로 설정하면 TextInput1TextInput2의 숫자의 합이 항상 자동으로 표시됩니다.If you then set the Text property of Label1 to TextInput1 + TextInput2, it will always show the sum of whatever numbers are in TextInput1 and TextInput2 automatically.

PowerApps에서 두 숫자의 합계를 계산합니다.

Label1 컨트롤을 선택하면, 화면 맨 위에 있는 수식 입력줄에 Text 수식이 나타납니다.Notice that the Label1 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 TextInput1:

PowerApps에서 두 숫자의 합계를 계산 하는 애니메이션

Label1의 수식이 자동으로 다시 계산되어 새 값을 표시합니다.The formula for Label1 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(Label1.Text) < 0, Red, Black )

조건부 서식의 애니메이션

다음과 같은 다양한 시나리오에 수식을 사용할 수 있습니다.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.
  • Label1의 텍스트가 어디서 왔는지 이해하기 위해서는, 어디를 확인해야 하는지 정확하게 알고 있습니다. 바로 Text 속성입니다.To understand where Label1'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.

표시Display 설명Description
레이블 컨트롤과 두 단추 텍스트를 사용하여 앱에서 입력 App with a Text input control, a label, and two buttons 앱을 시작하는 경우 누계는 0입니다.When the app starts, the running total is 0.

빨간 점은 텍스트 입력 상자에 77을 입력하는 사용자의 손가락을 나타냅니다.The red dot represents the user's finger in the text-input box, where the user enters 77.
텍스트 입력된 컨트롤이 있고 추가 단추를 눌렀는지 사용자가 추가 단추를 선택합니다.The user selects the Add button.
총 77이며 다시 추가 누계에 77이 추가됩니다.77 is added to the running total.

사용자가 다시 추가 단추를 선택합니다.The user selects the Add button again.
모두 지워지기 전에 154 77이 다시 누계에 추가되어 154가 표시됩니다.77 is again added to the running total, resulting in 154.

사용자가 지우기 단추를 선택합니다.The user selects the Clear button.
누계가 지워집니다. 누계는 0으로 다시 설정됩니다.The running total is reset to 0.

계산기는 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?

전역 변수 사용Use 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 + TextInput1 )Set( RunningTotal, RunningTotal + TextInput1 )

    이 수식은 + 연산자 때문에 숫자를 가지고 있는 RunningTotal을 전역 변수로 설정합니다.The mere existence of this formula establishes RunningTotal as a global variable that holds a number because of the + operator. RunningTotal은 앱의 아무 곳에서 참조 할 수 있습니다.You can reference RunningTotal anywhere in the app. 사용자가 이 앱을 열 때마다 RunningTotal 의 초기 값은 빈 값이 됩니다.Whenever the user opens this app, RunningTotal has an initial value of blank.

    처음으로 사용자가 추가 단추를 선택 하고 Set 이 실행될 때, RunningTotalRunningTotal + TextInput1 값으로 설정됩니다.The first time that a user selects the Add button and Set runs, RunningTotal is set to the value RunningTotal + TextInput1.

    함수를 설정 하려면 추가 단추 OnSelect 속성 설정

  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 )

    지우기 단추 OnSelect 속성 설정 함수를 설정 하려면

  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 show the global variable's value, select the File menu, and select Variables in the left-hand pane.

    파일 메뉴에서 변수 옵션

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

    변수를 사용 하는 위치 목록

변수 유형Types of variables

PowerApps에는 세 가지 유형의 변수:PowerApps has three types of variables:

변수 유형Variables type 범위Scope 설명Description 설정 하는 함수Functions that establish
전역 변수Global variables AppApp 사용이 가장 간편합니다.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 be referenced from only one screen. UpdateContextUpdateContext
NavigateNavigate
컬렉션Collections AppApp 앱에서 어디서나 참조할 수 있는 테이블을 보유합니다.Holds a table that can be referenced 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
ClearCollectClearCollect

변수 생성 및 제거Create and remove variables

모든 변수는 Set, UpdateContext, Navigate, Collect, 또는 ClearCollect 함수에서 나타날 경우 암시적으로 생성됩니다.All variables are created implicitly when they appear in a Set, UpdateContext, Navigate, Collect, or ClearCollect function. 변수와 그 형식을 선언하려면, 앱 어디서나 이러한 함수들 내에서 그것을 포함만 하면 됩니다.To declare a variable and its type, you need only include it in any of these functions anywhere in your app. 이러한 함수들은 변수를 생성하지 않습니다. 값을 변수에 채우기만 합니다.None of these functions create variables; they only fill variables with values. 다른 프로그래밍 도구에서처럼 명시적으로 변수를 선언하지 않으며, 모든 형식은 사용을 통해 암시적으로 알 수 있습니다.You never declare variables explicitly as you might in another programming tool, and all typing is implicit from usage.

예를 들어, OnSelect 수식이 Set( X, 1 ) 으로 설정된 단추 컨트롤이 있을 수 있습니다.For example, you might have a button control with an OnSelect formula equal to Set( X, 1 ). 이 수식은 숫자 형식의 X 변수를 설정합니다.This formula establishes X as a variable with a type of number. 숫자로 수식에서 X를 사용할 수 있으며, 해당 변수는 사용자가 앱을 열고 단추를 선택하기 전에는 비어 있습니다.You can use X in formulas as a number, and that variable has a value of blank after you open the app but before you select the button. 단추를 선택하면, X 변수에 1을 제공하게 됩니다.When you select the button, you give X the value of 1.

다른 단추를 추가하고 OnSelect 속성을 Set(X, "Hello") 으로 설정하게 되면, type(텍스트 문자열)은 이전 Set(숫자)의 형식과 일치하지 않으므로 오류가 발생합니다.If you added another button and set its OnSelect property to Set( X, "Hello" ), an error would occur because the type (text string) doesn't match the type in the previous Set (number). 변수의 암시적 정의는 형식이 일치해야 합니다.All implicit definitions of the variable must agree on type. 다시 말하면, 이러한 수식 중 하나가 실행되었기 때문이 아니라, X가 수식에서 언급되었기 때문에 오류가 발생됩니다.Again, all this happened because you mentioned X in formulas, not because any of those formulas had actually run.

암시적으로 변수를 설정하는 Set, UpdateContext, Navigate, Collect, 또는 ClearCollect 함수를 모두 제거하여 변수를 제거합니다.You remove a variable by removing all the Set, UpdateContext, Navigate, Collect, or ClearCollect functions that implicitly establish the variable. 이러한 함수가 없으면, 변수가 존재하지 않습니다.Without these functions, the variable doesn't exist. 오류가 발생하기 때문에 변수에 대한 모든 참조를 또한 제거해야 합니다.You must also remove any references to the variable because they will cause an error.

초기 값 및 변수 수명Variable lifetime and initial value

모든 변수는 앱이 실행되는 동안 메모리에 유지됩니다.All variables are held in memory while the app runs. 앱을 닫으면 변수가 보유하는 값이 손실됩니다.After the app closes, the values that the variables held are lost.

PatchCollect 함수를 사용하여 데이터 원본에 변수의 내용을 저장할 수 있습니다.You can store the contents of a variable in a data source by using the Patch or Collect functions. SaveData 함수를 사용하여 로컬 장치의 컬렉션에 값을 저장할 수도 있습니다.You can also store values in collections on the local device by using the SaveData function.

사용자가 앱을 열면 모든 변수의 초기 값은 빈 값입니다.When the user opens the app, all variables have an initial value of blank.

읽기 변수Reading variables

변수 이름을 사용하여 해당 값을 읽습니다.You use the variable's name to read its value. 예를 들어, 이 수식을 사용하여 변수를 정의할 수 있습니다.For example, you can define a variable with this formula:

Set( Radius, 12 )

그런 다음 어디서나 간단히 숫자를 사용하는 Radius를 사용할 수 있고 12로 바뀝니다.Then you can simply use Radius anywhere that you can use a number, and it will be replaced with 12:

Pi() * Power( Radius, 2 )

컨텍스트 변수에 전역 변수 또는 컬렉션과 같은 이름을 제공하는 경우 컨텍스트 변수가 우선합니다.If you give a context variable the same name as a global variable or a collection, the context variable takes precedence. 그러나, 명확성 연산자 @[Radius] 를 사용하면 전역 변수 또는 컬렉션을 여전히 참조할 수 있습니다.However, you can still reference the global variable or collection if you use the disambiguation operator @[Radius].

컨텍스트 변수 사용Use 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 또는 Navigate 함수를 사용하여 암시적으로 컨텍스트 변수를 만들고 설정합니다You implicitly establish and set context variables by using the UpdateContext or Navigate function. 앱을 시작하는 경우 모든 컨텍스트 변수의 초기 값은 빈 값입니다.When the app starts, the initial value of all context variables is blank.
  • 레코드를 사용하여 컨텍스트 변수를 업데이트합니다.You 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 without the record syntax.
  • 화면을 표시하기 위해 Navigate 함수를 사용할 때도 컨텍스트 변수를 설정할 수 있습니다.You can also set a context variable when you use the Navigate function to show a screen. 화면을 프로시저 또는 서브루틴의 한 종류로 생각하면, 이 접근법은 다른 프로그래밍 도구에서 매개 변수를 전달하는 것과 유사합니다.If you think of a screen as a kind of procedure or subroutine, this approach resembles 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 + TextInput1 } )UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    이 수식은 + 연산자 때문에 RunningTotal을 숫자를 가지고 있는 컨텍스트 변수로 설정합니다.The mere existence of this formula establishes RunningTotal as a context variable that holds a number because of the + operator. RunningTotal은 앱의 아무 곳에서 참조할 수 있습니다.You can reference RunningTotal anywhere in this screen. 사용자가 이 앱을 열 때마다 RunningTotal 의 초기 값은 빈 값이 됩니다.Whenever the user opens this app, RunningTotal has an initial value of blank.

    처음으로 사용자가 추가 단추를 선택하고 UpdateContext 가 실행되면, RunningTotalRunningTotal + TextInput1 값으로 설정 됩니다.The first time that the user selects the Add button and UpdateContext runs, RunningTotal is set to the value RunningTotal + TextInput1.

    추가 단추의 OnSelect 속성

  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 } ).

    선택을 취소 단추의 OnSelect 속성

  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. 화면을 이동하면서 컨텍스트 변수의 값을 설정할 수 있습니다.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 demonstrate this technique, insert a screen, insert a button, and set its OnSelect property to this formula:

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

    단추의 OnSelect 속성

    Alt 키를 누른 상태에서 단추를 선택하여 Screen1이 표시되고 컨텍스트 변수 RunningTotal이 -1000으로 설정되는 것을 확인합니다.Hold down the Alt key while you select this button to both show Screen1 and set the context variable RunningTotal to -1000.

    Screen1 열려 있습니다.

  8. 컨텍스트 변수의 값을 표시하려면, 파일 메뉴를 선택하고, 왼쪽 창에서 변수를 선택합니다.To show the value of the context variable, select the File menu, and then select Variables in the left-hand pane.

    파일 메뉴에서 변수 옵션

  9. 컨텍스트 변수가 정의되고 사용되는 위치를 표시하려면, 변수를 선택합니다.To show where the context variable is defined and used, select it.

    변수를 사용 하는 목록

컬렉션 사용Use a collection

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

    이 수식은 텍스트 문자열의 단일 열 테이블을 포함하는 컬렉션으로 PaperTape을 설정합니다.The mere existence of this formula establishes PaperTape as a collection that holds a single-column table of text strings. PaperTape은 앱의 아무 곳에서 참조할 수 있습니다.You can reference PaperTape anywhere in this app. 사용자가 이 앱을 열 때마다 PaperTape의 초기 값은 빈 테이블입니다.Whenever a user opens this app, PaperTape is an empty table.

    이 수식이 실행되면 컬렉션의 끝에 새 값을 추가합니다.When this formula runs, it adds the new value to the end of the collection. 단일 값을 추가하므로, Collect는 자동으로 단일 열 테이블에 이 값을 배치하고 열 이름은 Value이며, 나중에 사용할 수 있습니다.Because we're adding a single value, Collect automatically places it in a single-column table, and the column's name is Value, which you'll use later.

    추가 단추의 OnSelect 속성

  4. 사용자가 지우기 단추를 선택할 때 'Paper Tape'을 지우려면, OnSelect 속성을 다음 수식으로 설정합니다.To clear the paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

    선택을 취소 단추의 OnSelect 속성

  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. 'Paper Tape'을 표시하려면 데이터 테이블 컨트롤을 삽입하고, Items 속성을 다음 수식으로 설정합니다.To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    오른쪽 창에서, Value 열을 선택하여 표시합니다.In the right-hand pane, select the Value column to show it.

    컬렉션에 추가 값을 보여 주는 데이터 테이블

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

    PaperTape 컬렉션의 미리 보기

  10. 컬렉션을 저장하고 검색하기 위해, 두 개의 단추 컨트롤을 추가하고 Text 속성을 로드저장으로 설정합니다.To store and retrieve your collection, add two additional button controls, and set their Text properties to Load and Save. 로드 단추의 OnSelect의 속성을 다음 수식으로 설정합니다.Set the OnSelect property of the Load button to this formula:

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

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

    부하 단추의 OnSelect 속성

  11. 저장 단추의 OnSelect 속성을 다음 수식으로 설정합니다.Set the OnSelect property of the Save button to this formula:

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

    저장 단추의 OnSelect * 속성

  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 the app, and select the Load button to reload your collection.

참고

SaveDataLoadData 함수는 PowerApps Mobile에는 있지만 PowerApps Studio 또는 PowerApps의 웹 플레이어에는 없습니다.SaveData and LoadData function in PowerApps Mobile but not PowerApps Studio or the web player for PowerApps.