次の方法で共有


Power Apps でフォーム コントロールと表示フォーム コントロールを編集する

データ ソース内のレコードを表示、編集、作成します。

Description

表示フォーム コントロールを追加すると、ユーザーはレコードのすべてのフィールド、または指定したフィールドのみを表示できます。 編集フォーム コントロールを追加すると、ユーザーはこれらのフィールドを編集し、レコードを作成し、それらの変更をデータ ソースに保存できます。

フォーム ビュー コントロールとフォーム ビュー コントロールの例。

ギャラリー コントロールを追加する場合は、データ ソースにテーブルを表示するように構成し、ユーザーがギャラリーで選択したレコードを表示するようにフォームを構成できます。 ユーザーが編集の保存、編集の取り消し、レコードの作成を行うために選択できる 1 つ以上の Button コントロールを追加することもできます。 コントロールを一緒に使用することで、 完全なソリューションを作成できます。

制限事項

フォーム コントロールには、次の制限があります。

  • フォームをコピーしてデータ カードに貼り付けることはできません。 これは、アプリの安定性とパフォーマンスを危険にさらす特定のコントロールの組み合わせが作成されないようにするためです。

レコードの選択

どちらの種類のフォームでも、 その DataSource プロパティをレコードのテーブルに設定し、そのテーブル内の特定のレコードを表示するようにフォームの Item プロパティを設定します。 たとえば、フォームの Item プロパティをギャラリー コントロールの SelectedItem プロパティに設定できます。 ユーザーがギャラリー内のレコードを選択すると、フォームに同じレコードが表示されます。ただし、フォームにはさらに多くのフィールドを表示できる点が異なります。 ユーザーがギャラリーに戻り、別のレコードを選択すると、ギャラリーの SelectedItem プロパティが変更されます。 この変更により、フォームの Item プロパティが更新され、新しく選択されたレコードが表示されます。

また、レコードの説明を表示、編集、追加、またはルックアップFirst などの関数としてドロップダウン コントロールを使用して、フォームの Item プロパティを設定することもできます。 たとえば、 Item プロパティを次のいずれかの数式に設定して、Microsoft Dataverse の Accounts テーブルに Fabrikam エントリを表示できます。

First(Accounts)

Lookup(Accounts, "Fabrikam" in name)

各フォーム コントロールには、1 つ以上の カード コントロールが含まれています。 カードの DataField プロパティを設定することで、カード に表示されるフィールドとその他の詳細を指定します

レコードを作成する

編集フォーム コントロールが編集モードの場合、ユーザーはフォームの Item プロパティで指定されたレコードを更新できます。 検査した場合、 Mode プロパティは Edit を返 します

ただし、 編集フォーム コントロールが 新しい モードの場合、 Item プロパティは無視されます。 フォームに既存のレコードが表示されません。代わりに、各フィールドの値は、フォームを構成したデータ ソースの既定値と一致します。 NewForm 関数を使用すると、フォームがこのモードに切り替わります。

たとえば、New を表示するボタンの Text プロパティとその OnSelect プロパティを、NewForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、フォームが 新しい モードに切り替わるので、ユーザーは既知の値で始まるレコードを作成できます。

ResetForm 関数または SubmitForm 関数が正常に実行された場合、フォームは編集モードに戻ります。

  • [キャンセル] を表示するボタンの Text プロパティとその OnSelect プロパティを、ResetForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択すると、進行中の変更は破棄され、フォーム内の値は、もう一度データ ソースの既定値と一致します。
  • ボタンの Text プロパティを設定して 、変更を保存、その OnSelect プロパティを SubmitForm 関数を含む数式に設定できます。 ユーザーがそのボタンを選択し、データ ソースが更新されると、フォームの値はデータ ソースの既定値にリセットされます。

変更の保存

前のセクションで説明したように [ 変更の保存] ボタンを作成した場合、ユーザーはレコードを作成または更新し、そのボタンを選択してそれらの変更をデータ ソースに保存できます。 代わりに、SubmitForm 関数を使用してそのコントロールを構成する限り、同じタスクを実行するように Image コントロールまたはその他のコントロールを構成できます。 いずれの場合も、 ErrorErrorKindOnSuccessOnFailure の各プロパティは、結果に関するフィードバックを提供します。

SubmitForm 関数を実行すると、まず、ユーザーが送信するデータが検証されます。 必須フィールドに値が含まれていない場合、または別の値が他の制約に準拠していない場合は、 ErrorKind プロパティが設定され、 OnFailure 数式が実行されます。 ユーザーがデータが有効な場合 (つまり、フォームの Valid プロパティが true の場合) にのみ選択できるように、[変更の保存] ボタンまたはその他のコントロールを構成できます。 エラープロパティとErrorKind プロパティをリセットするには、問題を修正するだけでなく、[変更の保存] ボタンをもう一度選択する (または、[キャンセル] ボタンを選択して変更を破棄する) 必要があることに注意してください。

データが検証に合格した場合、 SubmitForm はデータ ソースに送信します。ネットワーク待機時間によっては時間がかかる場合があります。

  • 送信が成功すると、 Error プロパティがクリアされ、 ErrorKind プロパティが ErrorKind.None に設定され、 OnSuccess 数式が実行されます。 ユーザーがレコードを作成した場合 (つまり、フォームが以前 に新しい モードであった場合)、ユーザーが新しく作成したレコードまたは別のレコードを編集できるように、フォームが 編集 モードに切り替わります。
  • 送信が失敗した場合、 エラー プロパティには、問題を説明する、データ ソースからのわかりやすいエラー メッセージが含まれています。 ErrorKind プロパティは問題に応じて適切に設定され、OnFailure 数式が実行されます。

一部のデータ ソースは、2 人が同時に同じレコードを更新しようとしたときに検出できます。この場合、 ErrorKindErrorKind.Conflict に設定され、解決策は、他のユーザーの変更でデータ ソースを更新し、このユーザーによって行われた変更を再適用することです。

ヒント

ユーザーが進行中の変更を破棄できるようにフォームに [キャンセル] ボタンを指定した場合は、そのプロパティに画面を変更するための Navigate 関数も含まれている場合でも、ResetForm 関数をボタンの OnSelect プロパティに追加します。 それ以外の場合、フォームはユーザーの変更を保持します。

レイアウト

既定では、カードは電話アプリの場合は 1 つの列に、タブレット アプリの場合は 3 列に配置されます。 フォームに含まれる列の数と、フォームを構成するときにカードをスナップするかどうかを指定できます。 これらの設定は、カードの XYおよび Width プロパティの設定にのみ使用されるため、プロパティとして公開されません。

詳細については、「 データ フォームのレイアウトについて」を参照してください。

重要なプロパティ

DataSource – ユーザーが表示、編集、または作成するレコードを含むデータ ソース。

  • このプロパティを設定しない場合、ユーザーはレコードを表示、編集、または作成できません。また、追加のメタデータや検証は提供されません。

DefaultMode - フォーム コントロールの初期モード。 使用可能な値とその意味については、以下の Mode の説明を参照してください。

DisplayMode - フォーム コントロール内のデータ カードとコントロールに使用するモード。

Mode プロパティ ベースから派生し、個別に設定することはできません。

Mode DisplayMode Description
FormMode.Edit DisplayMode.Edit データ カードとコントロールは編集可能で、レコードへの変更を受け入れる準備ができています。
FormMode.New DisplayMode.Edit データ カードとコントロールは編集可能で、新しいレコードを受け入れる準備ができています。
FormMode.View DisplayMode.View データ カードとコントロールは編集できず、表示用に最適化されています。

エラーSubmitForm 関数が失敗したときにこのフォームに対して表示するわかりやすいエラー メッセージ。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。
  • このプロパティは、SubmitForm、EditForm、または ResetForm 関数が実行されている場合にのみ変更されます。
  • エラーが発生しない場合、このプロパティは 空白になり、 ErrorKindErrorKind.None に設定されます。
  • 可能であれば、返されるエラー メッセージはユーザーの言語になります。 一部のエラー メッセージは、データ ソースから直接送信され、ユーザーの言語に含まれていない可能性があります。

ErrorKindSubmitForm の実行時にエラーが発生した場合、発生したエラーの種類。

  • 編集フォーム コントロールにのみ適用されます。
  • このプロパティは Errors 関数と 同じ列挙体を持ちます。 編集フォーム コントロールは、次の値を返すことができます。
ErrorKind Description
ErrorKind.Conflict 別のユーザーが同じレコードを変更し、変更の競合が発生しました。 Refresh 関数を実行してレコードを再読み込みし、変更を再試行します。
ErrorKind.None エラーは不明な種類です。
ErrorKind.Sync データ ソースからエラーが報告されました。 詳細については、 Error プロパティを確認してください。
ErrorKind.Validation 一般的な検証の問題が検出されました。

Item – ユーザーが表示または編集する データソース 内のレコード。

LastSubmit – サーバーによって生成されたフィールドを含む、最後に正常に送信されたレコード。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。
  • データ ソースが一意の数値を持つ ID フィールドなどのフィールドを自動的に生成または計算する場合、SubmitForm が正常に実行された後、LastSubmit プロパティはこの新しい値を持つことになります。
  • このプロパティの値は 、OnSuccess 数式で使用できます。

モード – コントロールは 編集 モードまたは 新規 モードです。

Mode Description
FormMode.Edit ユーザーは、フォームを使用してレコードを編集できます。 フォームのカードの値には、ユーザーが変更できるように、既存のレコードが事前に設定されています。 SubmitForm 関数が正常に実行されると、既存のレコードが変更されます。
FormMode.New ユーザーは、フォームを使用してレコードを作成できます。 フォームのコントロールの値には、データ ソースのレコードの既定値が事前に設定されています。 SubmitForm 関数が正常に実行されると、レコードが作成されます。
FormMode.View ユーザーは、フォームを使用してレコードを表示できます。 フォームのコントロールの値には、データ ソースのレコードの既定値が事前に設定されています。

次のいずれかの変更が発生すると、フォームが 新しい モードから 編集 モードに切り替わります。

  • フォームが正常に送信され、レコードが作成されます。 ギャラリーが選択をこの新しいレコードに自動的に移動するように設定されている場合、フォームは作成されたレコードの 編集 モードになり、ユーザーが追加の変更を行うことができます。
  • EditForm 関数が実行されます。
  • ResetForm 関数が実行されます。 たとえば、ユーザーは、この関数で構成されている [キャンセル ] ボタンを選択できます。

OnFailure – データ操作が失敗したときに実行するアクション。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。

OnReset編集フォーム コントロールがリセットされたときに実行するアクション。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。

OnSuccess – データ操作が成功したときに実行するアクション。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。

[未保存] – True の 場合、 フォームの編集 コントロールには、保存されていないユーザーの変更が含まれています。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。
  • 保存されていない変更を失う前にユーザーに警告するには、このプロパティを使用します。 現在のレコードに変更を保存する前にユーザーが ギャラリー コントロール内の別のレコードを選択できないようにするには、ギャラリーの Disabled プロパティを Form.Unsaved に設定し、同様に更新操作を無効にします。

更新 – フォーム コントロールに読み込まれたレコードのデータ ソースに書き戻す値。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。
  • コントロール内のカードからフィールド値を抽出するには、このプロパティを使用します。 その後、これらの値を使用して、 Patch 関数呼び出しまたは接続によって公開される別のメソッドを使用してデータ ソースを手動で更新できます。 SubmitForm 関数を使用している場合は、このプロパティを使用する必要はありません。
  • このプロパティは、値のレコードを返します。 たとえば、フォーム コントロールに Name フィールドと Quantity フィールドのカード コントロールが含まれており、それらのカードの Update プロパティの値がそれぞれ "Widget" と 10 の場合、フォーム コントロールの Updates プロパティは { Name: "Widget"、Quantity: 10 } を返します。

有効カード または 編集フォーム コントロールに有効なエントリが含まれているかどうか、データ ソースに送信する準備ができています。

  • このプロパティは、 編集フォーム コントロールにのみ適用されます。

  • フォーム コントロールの Valid プロパティは、フォーム内のすべてのカード コントロールの Valid プロパティを集計します。 フォームの Valid プロパティは、そのフォーム内のすべてのカードのデータが有効な場合にのみ true です。それ以外の場合、フォームの Valid プロパティは false です

  • フォーム内のデータが有効でまだ送信されていない場合にのみ、ボタンが変更を保存できるようにするには、ボタンの DisplayMode プロパティを次の式に設定します。

    SubmitButton.DisplayMode = If(IsBlank( Form.Error ) ||Form.Valid、DisplayMode.Edit、DisplayMode.Disabled)

追加のプロパティ

BorderColor – コントロールの境界線の色。

BorderStyle – コントロールの境界線が SolidDashedDoted、None のいずれであるか。

BorderThickness – コントロールの境界線の太さ。

塗りつぶし – コントロールの背景色。

Height – コントロールの上端と下端の間の距離。

表示 – コントロールが表示されるか非表示になっているか。

– コントロールの左端と右端の間の距離。

X – コントロールの左端とその親コンテナー (親コンテナーがない場合は画面) の左端間の距離。

Y – コントロールの上端と親コンテナーの上端との間の距離 (親コンテナーがない場合は画面)。

詳細情報

アクセシビリティ ガイドライン

スクリーン リーダーのサポート

  • ラベルを使用してフォームに見出しを追加することを検討してください。