Power Appsの繰り返し処理(1)

スポンサーリンク

繰り返し処理

Power Appsには一般的なプログラミング言語によくあるforwhileといった繰り返し処理のためだけの構文は無く、基本的にテーブルに対して反復処理を行う関数のみがあります。

ForAll関数

ForAll関数は指定したテーブルのレコード全てに対して同一の処理を行い、その結果をテーブルとして返します。

例えば、次のようなテーブルがあったとします。

ValueAnswer
10
20
30
40
myTable

このテーブルのAnswerカラムをValueの100倍の値に更新したい場合は以下のような実装になります。

ClearCollect(myTable, AddColumns(Sequence(4),  "Answer", 0));
ClearCollect(myTable, ForAll(myTable, {Value: Value, Answer: Value*100}));

1行目で先のテーブルを作成し、ForAllAnswerを計算させて改めてmyTableに内容を保存します。

ValueAnswer
1100
2200
3300
4400
新しいmyTable

ForAll関数の第2引数の評価結果が空の場合は、結果のテーブルは元のテーブルよりもレコード数の少ないテーブルになります。

例えば次のような実装を行ったとします。

ClearCollect(myTable, ForAll(myTable, If(Value<3, {Value: Value, Answer: Value*100}));

すると結果は以下のようになります。

ValueAnswer
1100
2200
新しいmyTable

UpdateIf関数

テーブルの特定条件にマッチしたレコードに対して更新を行いたい場合はUpdateIf関数で行います。

この「特定条件にマッチ」という部分を逆手に取ると、全レコードに対して処理を行うこともできるわけです。

先ほどの処理をUpdateIf関数を使った場合、以下のようになります。

ClearCollect(myTable, AddColumns(Sequence(4),  "Answer", 0));
UpdateIf(myTable, true, {Value: Value, Answer: Value*100}); 

先ほどよりもこちらの方がちょっとだけ処理が早そうなイメージ……

Update関数

Update関数は「指定したレコードを置き換える」関数です。

Update(myTable, {Value: 1, Answer: 0}, {Value: 1, Answer: Value * 100})

上記は、ValueAnswerのレコードを、ValueはそのままでAnswerValue*100に更新します。

つまり、指定したレコードと同じ内容のレコードのみ更新できます。

また、同じ内容のレコードが複数あった場合、最初のレコードしか更新しません。

ただし、第4引数にAllを指定すれば、第2引数と同じレコードが複数あった場合、全てのレコードに対して更新処理が行われます。


今回はForAllUpdateIfUpdateの3つの繰り返し処理を行う関数を紹介しました。

次回はまた別の繰り返し処理を行う関数を紹介したいと思います。

よろしければ応援お願いいたします。
にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマーへ
Power Appsローコード
スポンサーリンク
aruktをフォローする
スポンサーリンク
今日は時間が余ったので、家に帰ってプログラム書いてます

コメント

タイトルとURLをコピーしました