その他の変数概念
Power Apps のロジックの概念と変数の種類について理解したら、アプリに変数を統合するのに役立ついくつかの追加の概念を拡張できます。
変数は自己参照できる
この概念は、グローバル変数とコンテキスト変数の両方に適用されます。 場合によっては、変数にそれ自体を参照させる必要がある場合があります。 これは多くの場合、値をインクリメントするカウンター型変数を実行するか、文字列を追加する場合に行われます。 Power Apps では、これは簡単に実装できます。 ボタンのカウンターを設定するには、OnSelect プロパティに次の式を追加します。
Set(varCounter, varCounter + 1)
ボタンの隣に Label を配置し、Text プロパティに varCounter を配置します。 ボタンを 1 回選択すると、値は 1 になります。 ボタンをもう 1 回選択すると、値は 2 になります。 実際の値については、次の表を参照してください。
| ボタンを選択する前の varCounter の値 | ボタンの選択 | フォーミュラ | 価値観 | ボタンを選択した後の varCounter の値 |
|---|---|---|---|---|
| 0 | 名 | Set(varCounter, varCounter + 1) | Set(varCounter, 0 + 1) | 1 |
| 1 | 2 番目 | Set(varCounter, varCounter + 1) | Set(varCounter, 1 + 1) | 2 |
| 2 | 3 番目 | Set(varCounter, varCounter + 1) | Set(varCounter, 2 + 1) | 3 |
アプリが最初に起動すると、varCounter の値は 0 になり、ボタンが選択されるたびに 1 ずつインクリメントされます。 既定のプロパティを設定しない場合、変数の既定値は変数の型によって異なります。
テキストの変数の場合は ""
数値の変数の場合は 0
ブール値の変数の場合は false
1 つの変数に 1 つのレコードを格納できる
この概念は、グローバル変数とコンテキスト変数に適用されます。 コレクションは、1 つ以上のレコードで構成されるテーブルであるため、少し異なります。つまり、コレクションのレコードの格納と取得は異なります。
前のユニットでは、グローバル変数またはコンテキスト変数に 1 つの値を格納する方法について説明しました。 変数には、1 つのレコードを格納することもできます。 その場合、ドット (.) 表記を使用してさまざまなフィールドや列を参照できます。
この例では、 varUser という名前のグローバル変数にユーザー レコード全体を格納します。 これを行うには、次の関数を使用します。
Set(varUser, User())
これにより、ユーザー レコード全体が変数に格納されます。 このユーザー レコードには、Email、FullName、Image という 3 つの列があります。 ドット (.) 表記を使用することで、それぞれの列の値を取得できます。 ユーザーのメール アドレスを表示するには、画面にラベル コントロールを追加し、text プロパティを次のように設定します。
varUser.Email
この例では、アクションに基づくデータ ソースからレコードが格納されます。 また、 LookUp 関数を使用して、Microsoft Dataverse などの表形式のデータ ソースからレコードを取得して変数に格納することもできます。
変数は自動では更新されない
変数を使用する場合によく混乱するのは、変数が自動では更新されないことです。 たとえば、変数を使用して、アプリの OnStart で顧客の請求書の数を格納することができます。 その後に、ユーザーがアプリで新しい請求書を作成したとします。 この変数では、システムの請求書の数が変わったことを識別できません。 この変数が更新されるのは、次の場合だけです。
ユーザーがアプリを閉じてもう一度開いた場合。 これにより、OnStart で請求書の数の計算が行われます。
ユーザーが請求書を作成したら変数を更新する機能を実装した場合。
変数を使用してデータを追跡するのが初めてである場合は、この一般的な混乱点に注意してください。