7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Apps キャンバスアプリでのデータの一括更新

Last updated at Posted at 2023-09-20

はじめに

既にいくつか記事があるという認識ですが、Power Apps キャンバスアプリでのデータの一括更新をしたいという要望をいただくことがあるため、改めて整理してみます。

実装アプローチ

例えば、何かの申請や問い合わせを管理するようなアプリを作成し、承認処理やステータス変更を一括で行いたいケースがあります。

今回は、問い合わせを管理するアプリを例にして、ステータスを一括更新 (対応中から完了に変更) する方法を紹介します。

image.png

まず、以下のようにして、ギャラリーを用意し、ギャラリー内にチェックボックスを追加します。
チェックボックスにチェックを入れたデータについて、ボタンを押した際、一括で対応完了にステータスを変更しようと思います。

ギャラリーの[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
)

実行してみます。無事ステータスが一括で更新されました。

image.png

ForAll でも一括更新出来ますが、上記方法の方が式が短く、また、確認する限り、パフォーマンスがいいです。

まとめ

今回は、Power Apps キャンバスアプリでのデータの一括更新について改めて紹介しました。ニーズはあると思うので、参考にしていただけると幸いです。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?