はじめに
既にいくつか記事があるという認識ですが、Power Apps キャンバスアプリでのデータの一括更新をしたいという要望をいただくことがあるため、改めて整理してみます。
実装アプローチ
例えば、何かの申請や問い合わせを管理するようなアプリを作成し、承認処理やステータス変更を一括で行いたいケースがあります。
今回は、問い合わせを管理するアプリを例にして、ステータスを一括更新 (対応中から完了に変更) する方法を紹介します。
まず、以下のようにして、ギャラリーを用意し、ギャラリー内にチェックボックスを追加します。
チェックボックスにチェックを入れたデータについて、ボタンを押した際、一括で対応完了にステータスを変更しようと思います。
ギャラリーの[Items]
プロパティは以下のような感じです。
Filter(問い合わせリスト,IsBlank(ComboBox1.Selected.Value)||Status.Value=ComboBox1.Selected.Value)
チェックボックスの[Visible]
プロパティは以下のように、Status が特定の値のときだけ表示するようにします。
If(ThisItem.Status.Value="対応中",true,false)
チェックボックスの[OnCheck]
、[OnUncheck]
プロパティの処理はそれぞれ以下の通りです。つまり、更新対象のデータを一旦コレクションに追加し、変更対象となる列の情報を更新します。
Collect(
colFinishedItems,
ThisItem
);
Patch(
colFinishedItems,
LookUp(
colFinishedItems,
ID = ThisItem.ID
),
{Status: {Value: "完了"}}
);
Remove(colFinishedItems,ThisItem)
ボタンの[OnSelect]
の処理は以下のような感じです。
Patch(
問い合わせリスト,
ShowColumns(
colFinishedItems,
"ID",
"Status"
)
);
Notify(
"ステータスを一括更新しました。",
NotificationType.Success
);
Clear(colFinishedItems);
Reset(ComboBox1)
ボタンの[DisplayMode]
も変更しておきます。
If(
IsEmpty(colFinishedItems),
DisplayMode.Disabled,
DisplayMode.Edit
)
実行してみます。無事ステータスが一括で更新されました。
ForAll でも一括更新出来ますが、上記方法の方が式が短く、また、確認する限り、パフォーマンスがいいです。
まとめ
今回は、Power Apps キャンバスアプリでのデータの一括更新について改めて紹介しました。ニーズはあると思うので、参考にしていただけると幸いです。