Power Appsでは色々な場面でエラーを検知したいケースがあります。具体的に私が取り組んでいるエラー検知を紹介しようと思います。
フォームの入力の際の必須項目についてのエラー
フォームの登録時に必須項目が空白である場合のエラーです。
画面はこのようなイメージ。
Power Appsでフォームを作成すると自動的にエラーメッセージまで作成をしてくれているので、「DataCard」の「Required」をtrueに変更し、「DataCard」内の「ErrorMessage」で表示させたいメッセージを調整することで、好きなメッセージを表示できます。「Required」は空白かどうか、の判定しかできないため、細かい入力規則までは判定できません。
単純に必須項目を入力させるだけであれば、この方法で十分。
複数項目の内容をチェックし、複数のエラーを同時に表示する。
入力された内容に応じて複数のエラーメッセージを表示する方法を紹介します。
例えば、日付の入力で過去の日付の入力を禁止し、同時にテキストでは指定の桁数以上の入力を禁止する場合などに利用します。
サンプルとして、日付は今日以前の日付、テキストは7桁以外の場合にエラーメッセージを表示するコードです。
//エラー検知:日付が今日以前の場合
// 選択された日時と現在の日時の差を計算(日数の差)
Set( _DaysDifference, DateDiff( Today(), DataCardValue10.SelectedDate, TimeUnit.Days )
);
If( _DaysDifference <= -1, UpdateContext({_dateError: "true"}), UpdateContext({_dateError: "false"})
);
//エラー検知:テキストが7桁以外の場合
If( Len(DataCardValue7.Text) <> 7, UpdateContext({_textError: "true"}), UpdateContext({_textError: "false"})
);
// 条件判定と処理
If( Or( _dateError = "true", _textError = "true" ),// エラーメッセージ Notify( "エラーです。確認をお願いします。" & If( _dateError = "true", "「今日以降の日付で入力してください。」 ", "" ) & If( _textError = "true", "「7桁で入力してください」 ", "" ), NotificationType.Warning ); , // 登録処理 IfError( SubmitForm(Form3); Notify( "エラーが発生しました。", NotificationType.Error ), Notify( "登録が完了しました。", NotificationType.Success ) );
)
それぞれのエラーに関して、変数にtrue・falseを設定し、1つでもtrueの場合にエラーメッセージの表示を行うようにしています。メッセージも1つ1つをtrue・falseを判定して表示と非表示を切り替えることで、該当のエラーメッセージだけを表示することができます。
エラーメッセージはこのように表示されます。
この形式であれば、フォームの登録時などに複数の入力内容のチェックを行うことができます。
また、事前の入力チェックを行った上で、実行時にエラーになるケースも検知しています。コードでいうとこの部分です。
IfError( SubmitForm(Form3); Notify( "エラーが発生しました。", NotificationType.Error ), Notify( "登録が完了しました。", NotificationType.Success ) );
事前チェックが漏れていた場合や、何かしらほかの要因で失敗するケースに対してメッセージの表示ができます。Microsoftの障害の時など、入力内容は問題無くとも、登録できない場合のエラーに対しても対応できます。