基本的なデータベース操作(登録、読込、更新、削除)とは何か?を復習したい場合は、以下の記事を参考にしてください。
- SharePointリストのデータ更新と、データ削除の実装方法
- 特定の条件(列の値)により、文字色等の表示を変える方法
- ギャラリーに表示するデータを、条件で絞る(フィルターする)方法
YouTube動画で見たいかたは、こちらからどうぞ!
今回の記事では、CRUDの内、UとD(データベースの更削除と読込)について解説します。
- データベースの更新:SubmitForm関数、Patch関数、Update関数、UpdateIf関数等を使う
- データベースの削除:Remove関数、RemoveIf関数等を使う
ギャラリーに表示したデータの更新や、削除の方法を知りたい方は是非見てください!
データベースへの登録、データの表示方法を知りたい方は、以下の記事を参考にしてください。
データベースの削除方法(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つあります。
- 買い物が終わったアイテムをチェックすると、買い物管理の”完了フラグ”列をFalseからTrueに更新する
- 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にするには、以下のように記載します。
こんな感じで、買い物が済んでいるアイテムの”完了フラグ”列を更新することができました。
②画面表示時に、特定の条件を満たすレコードの列の値を更新する
次に、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関数:対象のレコードの特定の列の値だけを更新し、他の列の値はそのまま保持することができる