別のテーブルのメイン フォームから直接関連テーブル レコードを編集する

Power Apps 内のテーブル フォームで関連するテーブル レコードを操作する方法は複数あります。 たとえば、簡易表示フォームを使用して読み取り専用モードで関連テーブルを含め、ダイアログのメイン フォームを使用してレコードを作成、編集できます。

関連するテーブル レコードを操作するもう 1 つの方法は、フォーム コンポーネント コントロールを別のテーブルのメインフォームに追加することです。 フォーム コンポーネント コントロールを使用すると、ユーザーは関連するテーブル レコードの情報を別のテーブルのフォームから直接編集できます。

たとえば、メイン アカウント フォームの別のタブにあるフォーム コンポーネントを次に示します。これにより、ユーザーはアカウント フォームを離れることなく連絡先レコードを編集できます。

別のタブに追加されたフォーム コンポーネント コントロール。

たとえば、メインの取引先企業フォームの既存のタブにフォーム コンポーネントを配置し、取引先企業フォームの概要タブから離れることなく取引先担当者レコードを編集できるようにしています。

既存のタブに追加されたフォーム コンポーネント コントロール。

フォーム コンポーネントをテーブルのメイン フォームに追加します

  1. 左側のナビゲーション ウィンドウで、コンポーネントを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
  2. 入力または表示を展開し、フォームを選択します。 フォーム コンポーネント コントロールの構成ページで、コントロールのプロパティを選択します:
    • フォームにルックアップ列を選択します。
    • 関連フォームを選択します。 列の関連テーブル構成に応じて、次のようになります:
      • 列が 1 つのテーブル ([作成者] 列など) に接続されている場合は、関連フォーム使用します。 単一の関連テーブルにフォーム コンポーネント コントロールを追加する
      • 列が複数のテーブルに接続されている場合 (所有者列のような多形性)、+関連フォーム を選択し、追加 を選択して関連フォームを追加します。 + 関連フォーム > 追加を選択し、関連テーブルごとに関連フォームを追加します。 複数の関連テーブルのためのフォーム コンポーネントを追加
    • 既定では、すべてのクライアント アプリ タイプウェブ電話、とタブレットフォームを表示できるようになりました。 フォームを表示ないクライアント タイプをクリアします。
  3. 完了 を選択します。
  4. 保存し、フォームを公開します。

クラシック エクスペリエンスを使用してフォーム コンポーネントを追加する

この例では、取引先担当者 の標準のメイン フォームは、アカウントのメイン フォームに追加されるフォーム コンポーネント コントロール用に構成されています。

重要

フォーム コンポーネント コントロールを追加する方法が変更されました。 最新の体験版をご利用いただくことをお勧めします。 詳細情報: テーブルのメイン フォームにフォーム コンポーネントを追加する

  1. Power Apps にログインします。

  2. 左側のウィンドウで、テーブルを選択します。 または、メニューからソリューション を開き、アカウントなどのテーブルを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。

  3. コンポーネント メニューからフォームを選択します。

  4. 用意されているフォームの中から、フォーム タイプが メインのフォームを選択します。

  5. クラシックに切り替え を選択します。 従来のフォーム エディターインターフェイスは、ブラウザのタブとして開きます。

  6. 挿入 タブを選択します。次に、新しいタブを作成して新しいセクションを追加するか、既存のタブに新しいセクションを追加します。

  7. 新規セクションで、取引先責任者 ルックアップ列のようなルックアップ列を追加します。

  8. ルックアップ列を選択して、ホーム タブで、プロパティの変更 を選択します。

  9. コントロール タブで、コントロールの追加 を選択し、コントロール タイプのリストで フォーム コンポーネントのコントロール を選択して、次に 追加 を選択します。

    フォーム コンポーネント コントロールを選択する。

  10. コンポーネントの Webタブレット電話 を選択します。

  11. 編集 (鉛筆アイコン) と プロパティの構成 ダイアログ ボックスを選択して、静的な値にバインドする を選択して、次に TableName がテーブルの一意の名前であり、FormID がメイン フォーム <QuickForms><QuickFormIds><QuickFormId entityname="TableName">FormID</QuickFormId></QuickFormIds></QuickForms> のフォーム ID であるこれと類似した XML エントリーを追加します。

    • たとえば、取引先企業フォーム上で 取引先連絡先 メイン フォームをレンダリングするには、<QuickForms><QuickFormIds><QuickFormId entityname="contact">1fed44d1-ae68-4a41-bd2b-f13acac4acfa</QuickFormId></QuickFormIds></QuickForms> を使用します

     フォーム コンポーネント コントロールを構成する。

  12. OK を選択し、次に、もう一度 OK を選択します。

  13. フォームを 保存 して、公開 します。

ヒント

テーブルの一意の名前を見つけるには、Power Apps でテーブルを選択し、次に 設定 を選択します。 編集 テーブル ペイン上に 名前 が表示されます。 フォーム ID は、フォームを編集するときにブラウザの URL に表示されます。 ID は URL の /編集/ に従います。 フォーム ID は、最新のフォーム デザイナーでフォームを開くときにブラウザーの URL に表示されます。

従来のフォーム デザイナーでは、フォーム ID は、URL の formId%3d 部分に従います。

フォーム コンポーネントの動作

このセクションでは、モデル駆動型アプリで使用した場合のフォーム コンポーネントの動作について説明します。

レコードの選択

フォーム コンポーネント コントロールがフォームを表示するには、バインドされているルックアップ列に値が必要です。 それ以外の場合、コントロールはメッセージ ソースレコードが選択されていません を表示します。 値を設定する 1 つの方法は、フォーム コンポーネント コントロールと同じルックアップ列にバインドされているルックアップ コントロールをフォームに追加することです。 ルックアップ コントロールを使用してルックアップ列の値を変更すると、フォーム コンポーネント コントロールは、新しいルックアップ列の値のデータを含むフォームを表示します。

列の検証

データを送信するには、メイン フォームとフォーム コンポーネント コントロールの両方で、Microsoft Dataverse に送信するデータに対して有効である必要があります。 これは、列検証エラー、必要な列の欠落などの両方に当てはまります。

OnSave ハンドラーは、メイン フォームとそのフォーム コンポーネント コントロールに対して実行されます。 どのハンドラーも、PreventDefaultDefault を使用してメイン フォームとフォーム コンポーネント コントロールの保存をキャンセルできます。 これは、保存操作は Dataverse に送信されるデータの preventDefault を呼び出すことができないことを意味します。 OnSave ハンドラーが呼び出される時の順序は定義されていません。 詳細情報: フォーム OnSave イベント (モデル駆動型アプリのクライアント API 参照)

レコードを保存する

検証ステージをパスすると、各レコードに対して、データは Dataverse に送られます。 現在、各レコードは異なるリクエストで個別に更新されています。 保存はトランザクションではなく、保存の順序は定義されていません。 1 つのフォーム コンポーネントを保存するときにエラーが発生しても、メイン フォームや他のフォーム コンポーネントへの変更はロールバックされません。 各保存が完了すると、フォーム上のすべてのレコードのデータが更新されます。

通知

フォーム コンポーネントの通知は、メイン フォームの通知に集約されます。 たとえば、フォーム コンポーネントに無効な列があり、保存しようとすると、無効な列の通知がフォーム コンポーネントではなく、メイン フォームの上部に表示されます。

エラー処理

保存中に複数のエラーが発生した場合、ユーザーには 1 つのエラーのみが表示されます。 ユーザーが変更を加えて最初のエラーを修正し、保存すると、次のエラーが表示されます。 ユーザーは、すべてのエラーが解決されるまで保存を続ける必要があります。

保存されていない変更でレコードを変更する

フォーム コンポーネントのフォームに未保存の変更があり、ユーザーがフォーム コンポーネントがバインドされているルックアップ列を変更しようとすると、ユーザーはこの変更について警告されます。

クライアント API

フォーム コンテキスト はフォーム コンポーネント コントロールに使用できます。 これは、getControl のような API を介してコントロールにアクセスすることにより、メインフォームのフォーム コンテキストを介してアクセスできます。 フォーム コンポーネント コントロールの関連テーブルのデータにアクセスする前に、イベント ハンドラーは isLoaded API コントロールが true を返すようにします。

制限

フォーム コンポーネント コントロールをテーブル フォームに追加するときは、次の制限に注意してください。

  • フォーム コンポーネント コントロールは、メイン フォームのレンダリングのみをサポートします。 同様に、フォーム コンポーネント コントロールの追加のサポートは、メインフォームでのみサポートされます。 クイック作成、クイックビュー、カードなどの他のフォームタイプはサポートされていません。

  • ビジネス プロセス フローを持つフォームは、現在、メイン テーブル フォームや関連テーブル フォームのいずれにも対応していません。 ビジネス プロセス フローのあるフォームがある場合、予期しない動作が発生する可能性があります。 ビジネス プロセス フローを使用するフォームでフォーム コンポーネントを使用しないことをお勧めします。

  • フォーム コンポーネント コントロールは、フォーム コンポーネント コントロールによって使用されるフォームにフォーム コンポーネント コントロールを追加するなどの、埋め込みフォーム コンポーネント コントロールはサポートしていません。

  • フォーム コンポーネント コントロールは 埋め込みキャンバス アプリ をサポートしていません。 これらのキャンバス アプリでは予期しない動作が発生する可能性があります。

  • フォーム コンポーネント コントロールは、フォームに複数のタブが含まれている場合にのみ、使用するフォームの最初のタブを表示します。

  • 単一のフォームで異なるフォーム コンポーネント コントロールに同じフォームを使用することは、サポートされていません。

  • フォーム コンポーネントで使用するフォームは、ご利用のアプリに含まれている必要があります。 そうでない場合、または現在のユーザーがフォームにアクセスできない場合は、アプリに含まれ、ユーザーが利用できる最上位のメインフォームにフォール バックします (フォームの順序に基づいて)。

  • フォーム コンポーネントでフォームが使用するコンポーネントはすべて、ご利用のアプリに含まれている 必要があります。 これらのコンポーネントには、関連するテーブル、ビュー、ビジネス プロセス フローが含まれます。 そうでない場合、フォームで使用できないか、予期しない動作が発生する可能性があります。

  • マルチセッション アプリでレンダリングする場合、フォーム コンポーネント コントロールには特定の制限があります。 クライアント API を使用してフォーム コンポーネント コントロールを変更する場合、またはデータがフォームに入力される場合、マルチセッション タブを切り替えるときに変更が保持されない可能性があります。

  • フォーム コンポーネントでタイムライン ウォールの設定に使用される列が変更された場合、タイムライン ウォールが更新されない場合があります。 ページが更新されると、タイムライン ウォールが期待どおりに更新されます。

  • モバイルでは、現在タイムライン コントロールはフォーム コンポーネント コントロールには表示されません。

  • サブグリッドの場合、すべてのレコードを見る関連するレコードを見る コマンド ボタンは、フォーム コンポーネント内にレンダリングされている場合は使用できません。

  • フォーム コンポーネント コントロールは、一括編集ダイアログではサポートされていません。 既定ではこれらは一括編集ダイアログのフォームに表示されず、関連するテーブル レコードに加えられた変更は保存されません。

参照

モデル駆動型アプリのデータのビジュアル化のためのカスタム コントロールの使用

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。