フォーム以外の機能が必要な場合

完了

Power Apps でキャンバス アプリを構築する場合、データ ソースのレコードを表示するためにギャラリーにアクセスし、個々のレコードを表示、作成、および編集するためにフォームにアクセスしますが、フォームでは不十分な場合があります。 そのようなシナリオの場合、Power Apps には表形式のデータ ソースを直接更新する関数があります。

レコードを直接作成および編集する

このモジュールでは、フォームを直接使用せずに、Patch 関数を使用してデータ ソースを更新する方法について学習します。

Patch が最もよく使用されるのは、ユーザーの操作なしでデータに対してアクションを繰り返し実行する必要がある場合や、アプリのデザインでフォームを使用できない場合です。 たとえば、ユーザーがボタンをクリックして別の画面に移動するたびにログ データ ソースを更新する場合は、ボタンの OnSelect プロパティに数式を使用できます。

Patch(LoggingTable, Defaults(LoggingTable), {WhoClicked:
User().FullName, WhenClicked: Now()}); Navigate(NextScreen,
ScreenTransition.Cover)

この数式では、LoggingTable という名前のデータ ソースに新しいレコードが作成されます。 WhoClicked 列は、サインインしているユーザーの FullName プロパティに設定され、WhenClicked 列は、ユーザーがボタンをクリックしたときの日付と時刻に設定されます。 これにより、Cover 画面遷移を使用して NextScreen という名前の画面が開きます。

レコードの削除

また、データ ソースから 1 つ以上のレコードを削除するために使用できる関数もあります。 以下がその関数です。

  • Remove と RemoveIf: これらの関数は、データ ソースからレコードを取り除く、または削除するために使用されます。

  • Clear: コレクションからすべてのレコードを削除するには、Clear 関数を使用します。

たとえば、ギャラリー コントロールからレコードを削除する権限をユーザーに付与する場合は、データ ソース CustomerOrders を表示するごみ箱アイコンをギャラリーに追加してから、アイコンの OnSelect プロパティを次のように設定します。

Remove(CustomerOrders, ThisItem)

この数式で、ごみ箱アイコンが表示されていた項目のレコードが CustomerOrders データ ソースから削除されます。 確認はないため、ユーザーが本当にレコードを削除するかどうかを確認するには、確認ダイアログまたはポップアップ ダイアログの実装を検討します。

レコードの一括変更

Patch と Remove は、どちらも 1 つのレコードに影響を与えるために使用される関数です。 複数のレコードの変更に影響を与える必要がある場合は、2 つの選択肢があります。

  • 前のモジュールで説明した ForAll 関数を使用して、データのテーブルをループ処理し、テーブル内の各レコードに対して Patch または Remove 関数を実行します。

  • あるテーブルから別のテーブルに書き込むには、Collect 関数を使用します。 ソース テーブルの各レコードは、ターゲットのテーブルに別々のレコードとして追加されます。

これらのトピックは、他の Power Apps のラーニング パスで説明されているため、このラーニング パスでは説明しません。

コレクションはデータ ソース

これらの関数はコレクションをターゲットとして使用できることを覚えておくことが重要です。 Patch、Remove、および RemoveIf はすべて、表形式のデータ ソースとコレクションの両方を変更するために使用できます。 コレクションにデータを格納し、その項目を操作することがよくある、より複雑なアプリを作成する場合は、これらの関数がその操作の大きな役割を占めることになります。

このモジュールの残りの部分では、データ ソースの更新について扱います。 特に明記しない限り、データ ソースは表形式のデータ ソースまたはコレクションの可能性があるという点に注意してください。

次のユニットでは、レコードの作成および編集方法について学習します。