PowerApps

【PowerApps入門】キャンバスアプリの作成方法#6 ~アプリ開発③~データベースの更新・削除方法

ミムチ
ミムチ
今日はデータベースの更新、削除の実装ですな!

パワ実
パワ実
今日はデータベース操作の登録、読込、更新、削除(CRUD)機能の内、更新と削除機能の実装と、特定の条件によって表示を変えたり、表示データを絞る方法を解説するよ!

基本的なデータベース操作(登録、読込、更新、削除)とは何か?を復習したい場合は、以下の記事を参考にしてください。

PowerAppsのサンプルアプリで解説!基本の画面構成と、CRUD機能の実装方法 YouTube動画で見たいかたは、こちらからどうぞ! https://youtu.be/rrw3vR56cFU ...

この記事でわかること

  1. SharePointリストのデータ更新と、データ削除の実装方法
  2. 特定の条件(列の値)により、文字色等の表示を変える方法
  3. ギャラリーに表示するデータを、条件で絞る(フィルターする)方法

YouTube動画で見たいかたは、こちらからどうぞ!

今回の記事では、CRUDの内、UとD(データベースの更削除と読込)について解説します。

  • データベースの更新:SubmitForm関数、Patch関数、Update関数、UpdateIf関数等を使う
  • データベースの削除:Remove関数、RemoveIf関数等を使う

ギャラリーに表示したデータの更新や、削除の方法を知りたい方は是非見てください!

データベースへの登録、データの表示方法を知りたい方は、以下の記事を参考にしてください。

【PowerApps入門】キャンバスアプリの作成方法#5 ~アプリ開発②~関数とは何か?データベースへの登録・読込方法 基本的なデータベース操作(登録、読込、更新、削除)とは何か?を復習したい場合は、以下の記事を参考にしてください。 http...

データベースの削除方法(Delete)

Shopping Itemを登録する(Patch関数の復習)

前回解説したPatch関数で、Shopping Itemの登録を実装し、一覧表示しました。

元々の買い物管理(SharePointリスト)は以下になります。

買い物管理リストの”店ID”は、店名管理リストの”店名”に一致するレコードの、”店ID”を登録します。

ミムチ
ミムチ
買い物管理リストの”完了フラグ”列と、”削除フラグ”列は何のためにあるのですかな?

パワ実
パワ実
”完了フラグ”列は、買い物が済んだアイテムをチェックしていくため、”削除フラグ”列は、買い物が済んだアイテムを再度表示したときに、画面から非表示にするためだよ。

ミムチ
ミムチ
つまり買い物が済んだアイテムも、データベースからは削除しないで、一覧に表示しないだけという実装ですな。

パワ実
パワ実
その通り!

過去に買い物したアイテムのデータも、あとからPower BIの分析で使えないかな~と思ってるから残しておくよ。

今回は、テキスト入力コントロールの「OnChange」プロパティに、以下のようなPatch関数式を書いて、データベースへの登録を実装しています。

OnChangeプロパティは、ユーザーがコントロールの値を変更したとき等に使えます。

今回の場合、テキスト入力フォームに値を入力後、Enterキーを押した場合もこのプロパティの関数が実行されます。

注意点としては、店IDを登録する際、ドロップダウンで選択するのは店名で、登録するのは、店IDという点です。

このようなときはLookUp関数を使い、以下のような関数式を書きます。

LookUp(店名管理, 店名 =Dropdown_ShoppingShop.SelectedText.Value, 店ID)

LookUp関数の使い方

  • LookUp関数は、数式を満たすテーブルでの最初のレコードを検索します。
  • 構文:LookUp(テーブル名, 条件式 [, テーブル内の参照する列] )

登録されている店IDからショップ名を表示するには、やはりLookUp関数を使い、このように表示することができます。

Shoppint Itemを削除する

ギャラリーに表示しているデータから、特定のレコードを削除する実装は簡単です。

1.ギャラリーの一番上の行を選択し、挿入タブからアイコンで、ゴミ箱を選択します。

一番右のDelete列において、大きさを調整します。

2.関数式はRemove関数を使い、以下のように書くだけです。

※条件を指定してレコードを削除する際はRemoveIf関数を使います

Remove(買い物管理, ThisItem)

Remove関数の使い方

  • Remove関数は、1 つまたは複数の特定のレコードをデータソースから削除します。
  • 構文:Remove(テーブル名, 対象のレコード)

基本的なデータベースの削除は、このように簡単に実装できます。

データベースの更新方法(Update)

今回実装するデータベースの更新は2つあります。

実装するデータベース更新の内容

  1. 買い物が終わったアイテムをチェックすると、買い物管理の”完了フラグ”列をFalseからTrueに更新する
  2. Shopping画面を表示したとき、買い物が済んでいるアイテム(”完了フラグ”列がTrue)のレコードの、”削除フラグ”列をFalseからTrue に変更し、ギャラリーに表示しないようにする

①アイコンをクリックしたレコードの、列の値を更新する

1.ギャラリーの一番上の行を選択し、挿入タブからチェックバッジアイコンを追加します。

2.チェックアイコンのOnSelectプロパティで、Patch関数を使ってデータを更新します。

Patch(買い物管理, Gallery_ShoppingItem.Selected,
 {完了フラグ: Not(ThisItem.完了フラグ)}
);

Patch関数の使い方(データ更新時)

  • Patch関数は、データソース内で1つ以上のレコードを変更または作成します。
  • 構文:Patch(テーブル名, 対象のレコード, 更新内容)

対象のレコードは、ギャラリー名.Selectedと記載すると、ギャラリーで選択しているレコードが対象になります。

更新内容は”完了フラグ”列がFalseだった場合はTrueに、Trueだった場合はFalseに更新したいです。

このような場合は、Not関数を使いましょう。

Not関数の使い方

  • Not関数は、引数がfalseの場合はtrueを、引数がtrueの場合はfalseを返します。
  • 構文:Not(評価式)

3.また例えば、”完了フラグ”列がTrueのアイテムについて、フォントの色を赤くし、取り消し線表示するには、”Color”と”StrikeThrough”のプロパティで実装しています。

フォントの色を変えるのは、Colorプロパティです。

If関数を使い、このアイテムの”完了フラグ”列がTrueならば赤色、Falseならば黒で表示するには、以下のように記載します。

取消線は”StrikeThrough”プロパティで実装します。

これもIf関数を使い、”完了フラグ”列がTrueであれば取り消し線がTrue、そうでなければFalseにするには、以下のように記載します。

こんな感じで、買い物が済んでいるアイテムの”完了フラグ”列を更新することができました。

パワ実
パワ実
こんな感じでPatch関数を使うと、SubmitForm関数よりも柔軟なデータベース更新ができるよ。

ミムチ
ミムチ
なるほど、これは便利ですな!

②画面表示時に、特定の条件を満たすレコードの列の値を更新する

次に、Shopping画面を表示したときに、”完了フラグ”列がTrueのアイテムの、”削除フラグ”列をTrueにするデータベース更新を実装します。

パワ実
パワ実
これはさっき話したように、買い物が済んだアイテムもデータベースからは削除せず、あとで分析に使うため残しておきたいけど、ギャラリーには表示しないようにするためだよ!

1.画面を表示したときに実行する関数は、OnVisibleプロパティで設定できます。

アプリ画面の外側をクリックし、プロパティのドロップダウンでOnVisibleを選択します。

2.UpdateIf関数を使い、以下のような関数式を書きます。

UpdateIf(買い物管理,
 完了フラグ = true, {削除フラグ: true},
 完了フラグ= false && 日付< Today(), {日付: Today()}
);

UpdateIf関数の使い方

  • UpdateIf関数は、条件を指定してレコードを更新することができます。
  • 構文:UpdateIf(テーブル名, レコードの条件1, 変更内容1, [レコードの条件2, 変更内容2, …])

3.今回は2つ目の条件で、”完了フラグ”列がFalseで、日付が今日以前のデータ、つまり買い物日が過ぎているけど、買い物が済んでいないアイテムの日付を今日に更新しています。

4.動作確認でアプリの起動時や、いったん別の画面に移ってから、再度Shopping画面を表示してみます。

5.先ほどのOnVisibleプロパティの関数式が実行され、Completed列がTrueのアイテムの、DeleteFLG列が、FalseからTrueに変わりました。

6.あとはギャラリーの表示をFilter関数を使い、削除フラグ= Falseのアイテムに絞れば、”削除フラグ”列がTrueになったアイテムは表示されなくなります。

Filter関数の使い方

  • Filter関数は、数式を満たすテーブルでのレコードを検索します。
  • 構文:Filter(テーブル名, 条件式1, [条件式2, …])

このような感じで、データベースの更新ができます。

ミムチ
ミムチ
大体はやり方が分かってきましたぞ!

ところで、表示されている”Item”や”Shop”も更新したいのですが、どのように実装すればよいのですかな?

パワ実
パワ実
それについては変数を使う必要があるから、また別の記事で紹介するね!

ギャラリーに表示されている”Item”や”Shop”を更新する方法は、以下の動画でも紹介しています。

最後に

この記事では、Power Appsでデータベースの更新、削除する方法を解説しました。

今回使ったUpdate、UpdateIf、Patch関数の違いは以下になります。

  • Update関数:対象のレコード全体を更新する
  • UpdateIf関数・Patch関数:対象のレコードの特定の列の値だけを更新し、他の列の値はそのまま保持することができる

パワ実
パワ実
次回は変数を使って、ギャラリーに表示されている”Item”や”Shop”を更新する方法を解説します!

キャンバスアプリの作成方法#7 ~アプリ開発④~変数、コレクションとは?データベースの更新この記事では、Power Appsアプリ開発の知識として必須となる「変数」と「コレクション」について解説します。 変数やコレクションを使うと、複数レコードを一度に登録したり、ポップアップ風の実装をするなど、様々な場面で役立ちますので、是非マスターしましょう!...
ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

ご依頼・ご相談について

Power Platformに関するご相談は、こちらからお願いします!

Power Platform学習におすすめの無料ハンズオンセミナー、参考本は、こちらのページを参考にしてください。