日付選択コントロールを比較
PowerAppsのフォーム画面で2つの日時を比較して入力を制限したい場合がありますが、ちょっとつまづいたので記録しておきます。サンプルで「予約」というアプリを作りました。「タイトル」「予約日時1」「予約日時2」のコントロールがあり、二つのコントロールが同じ日付だと画面右上のSubmitボタンを押したときにエラー画面が表示されるような数式を考えます。
この日付選択コントロールをどうやって指定するのかでちょっと躓いてしまいました。単に"DateValue1""DateValue2"と指定するだけでは数式がエラーになってしまいます。日付選択コントロールは、この場合"DateValue1.SelectedDate""DateValue2.SelectedDate"とするのが正解のようです。
ポップアップ画面を表示させたい
入力にエラーがあった場合にポップアップ画面でお知らせする方法です。画面の表示・非表示をコントロールするVisibleプロパティでSet関数を使って変数の値に応じた動きをさせます。
フォーム画面に挿入メニューからラベル2つとボタンを挿入し、それぞれわかりやすいように「背景」「メッセージ」と「戻るボタン」としておきます。「背景」で画面全体をグレーアウトし「メッセージ」にエラー内容をテキスト入力します。
塗りつぶしは、カスタムのA値を100以下に入力することによって透過率を設定することができます。動きとしては、Set関数を使って変数「Error」が1の場合にエラー画面を表示、0の場合はそのまま登録とします。
まずは、挿入したラベル2つとボタンをグループ化してVisibleプロパティに次の数式を入力します。
If(Error=1,true,false)・・・変数Errorが1だったら表示、そうでなかったら非表示
次に戻るボタンを押したときの動作を設定します。プロパティOnSelectで以下の数式を入力し元の画面に戻るようにします。
Set(Error,0)・・・変数Errorを0に設定する(エラー画面を非表示にする)
最後に、右上のチェックボタン(登録ボタン)を押したときの動作を設定します。2つの日付選択コントロールを比較し、エラー画面の表示・非表示を制御します。
OnSelectプロパティに次の数式を入力します。
If(DateValue1.SelectedDate=DateValue2.SelectedDate,Set(Error,1),SubmitForm(EditForm1))・・・予約日時1(DateValue1)と2(DateValue2)の日付が同じだったらエラー画面を表示し、そうでなかったらフォームを登録する
以上で完了です。
ポップアップ画面を使うとアプリの使い勝手が向上するのでおすすめですね。