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.

場合によっては、PowerApps で変数を使用する必要があります。これにより、動作の数式を追加して Excel のモデルを拡張します。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. ユーザーがセルに別の値を入力すると、新しい値に応じてすべての数式が自動的に再計算されます。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 での 2 つの数値の合計を再計算のアニメーション

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.

追加することで、アプリで Excel の動作をレプリケートするなど、 ラベル という名前のコントロールLabel1、および 2 つ テキスト入力 という名前のコントロールTextInput1TextInput2します。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. 設定する場合、 テキスト プロパティのLabel1textinput 1 + 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 での 2 つの数値の合計を計算します。

注意、 Label1コントロールを選択すると、表示、 テキスト 画面の上部にある数式バーで数式。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 での 2 つの数値の合計を計算のアニメーション

数式を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. この例をさらに進めて、ギャラリーの Items プロパティを数式 Filter( SharePointList ) に設定すると、新しくフィルター処理されたレコード セットが自動的に表示されます。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 では、1 行の数式 1 つでこのすべての処理を実現しました。In PowerApps, you accomplished all of that with a single, one-line formula.
  • 場所を理解するLabel1のテキストがから、検索場所を正確にわかって: 数式に含まれる、 テキスト プロパティ。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. "what if" を試したり要求したりした場合でも、Excel の場合と同様、派生的な問題は発生しません。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. [Add] ボタンを選択すると、数値が累計に加算されます。If you select an Add button, you'll add a number to the running total. [Clear] ボタンを選択すると、累計が 0 にリセットされます。If you select a Clear button, you'll reset the running total to zero.

表示Display 説明Description
テキストを使用してアプリの入力コントロール、ラベル、および 2 つのボタン 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.
テキスト入力コントロールには、77 が含まれているし、[追加] ボタンが押されました。 ユーザーが選択、追加ボタンをクリックします。The user selects the Add button.
合計は 77、およびそれに追加されるもう 1 つの 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. 累計は、ユーザーが [Add] ボタンを選択した回数と、選択したときにテキスト入力コントロールに格納されていた値に基づきます。It depends on how many times the user selected the Add button and what value was in the text-input control each time. ユーザーが 77 を入力した後で [Add] を 2 回選択したのか、加算する値に 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. この例では、[Add] ボタンでも [Clear] ボタンでも合計を更新できます。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 という名前のテキスト入力コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、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.

    最初に、ユーザーが選択した、追加ボタンと 設定 実行RunningTotal値に設定されているRunningTotal + TextInput1します。The first time that a user selects the Add button and Set runs, RunningTotal is set to the value RunningTotal + TextInput1.

    関数の設定を追加 ボタンの OnSelect プロパティを設定します。

  4. ユーザーが [Clear] ボタンを選択するたびに累計を 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 では、3 種類の変数があります。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. 1 つの画面から参照できます。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

表示されるときに、すべての変数は暗黙的に作成、設定UpdateContextNavigate収集、または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式と等しくセット (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プロパティをセット (X,「こんにちは」)、型 (文字列) は、前の型に一致しないため、エラーが発生設定(数)。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.

すべてを削除することで、変数を削除する、設定UpdateContextNavigate収集、または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.

使用してデータ ソースで変数の内容を保存することができます、パッチまたは収集関数。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 という名前のテキスト入力コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、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 実行RunningTotal 値に設定されているRunningTotal + TextInput1します。The first time that the user selects the Add button and UpdateContext runs, RunningTotal is set to the value RunningTotal + TextInput1.

    [追加] ボタンの OnSelect プロパティ

  4. ユーザーが [Clear] ボタンを選択するたびに累計を 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 } )

    ここでも、 UpdateContext 数式で使用UpdateContext ({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. コレクションは、変更が容易なテーブルを保持しているため、この計算機に値が入力されたときに、それぞれの値を "紙テープ" に記録するようにします。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 関数を使用し、結果のレコードから 1 つのフィールドを抽出します。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 という名前の テキスト入力 コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、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. に 1 つの値を追加している収集単一列テーブルに自動的に配置され、列の名前が、後で使用します。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. ユーザーが選択したときに紙テープを消去する、オフ ボタンを設定、 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. 紙テープを表示するには、データ テーブル コントロールを挿入し、その Items プロパティを次の数式に設定します。To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    右側のウィンドウで、選択、列を表示します。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. 格納およびコレクションを取得、2 つの追加のボタン コントロールを追加し、設定、テキストプロパティロード保存します。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 Studio または PowerApps の web player ではありませんが、PowerApps Mobile での関数。SaveData and LoadData function in PowerApps Mobile but not PowerApps Studio or the web player for PowerApps.