Power Apps 教えてAkiraせんせー!⑨
@akira_365🐟さんの講習9回目が終了しました!
ドロップボックスに絞り込み機能を適用していきます✨
8回目はこちら
Filter 関数で様々な項⽬での絞り込み機能を作る
第5回の講習で ViewScreen の Gallery である galView の
Items = Filter(TblReport, txtSearch. Text in Title)
で、「タイトルの中に txtSeach.Text があるよ」という条件式を書くところまで行いました。
ドロップダウンで絞り込む
条件を足すことによって、『会社名』、『カテゴリ』、『記入者』でも検索できるようにしていきます。(複数検索を可能にする)
複数条件で Filter したい場合、基本的にカンマ区切りで、第2条件・・・第3条件と増やすことができる。
Filter(テーブル , 条件1 , 条件 2 , 条件 3…)
🐟ドロップダウンは、選択したものを抽出してくれないといけないですよね
もしも会社名が空白なら? 空白を検索するということ?
🐟分岐を作りたくなければ、in を使う
in の識別子は部分一致。
部分一致を検索するにはテキスト値でないといけないため、Text 関数を使⽤すると、未選択の場合はすべての結果が返ってきます。
今回、データにblank(空白)があるということには触れずに進めています。
**********************************************************************************
**********************************************************************************
『会社名』と同様に『カテゴリ』、『記入者』についても設定します。
Items = Filter( TblReport, txtSearch.Text in Title, Text(drpCom.Selected.Result) in Company, Text(drpCate.Selected.Result) in Category, Text(drpAuth.Selected.Result) in 登録者.DisplayName
ドロップダウンを使った絞り込みが完了しました。
カレンダーから絞り込む
作成した Calendar で選択した日付に〇がつくようにしましたので、Filter に利用していきます。
どうやって絞り込みの材料にするか・・・まずは「⽇付」を表すものがどれか考えてみます。
『登録日時』を Calendar で選択しておきます。
今は 7/30 のデータのみ登録されているので、7/30 を選択しておきます。
Gallery で選択した日時を取得する方法は、先ほどのドロップダウンと同じように Selected ~ を使います。
試しに"捨てLabel"を用意して7/30 が表示されるか確認しました。
ViewScreen の Gallery である galView に Filter 条件を追加します。
Items = Filter( TblReport, txtSearch.Text in Title, Text(drpCom.Selected.Result) in Company, Text(drpCate.Selected.Result) in Category, Text(drpAuth.Selected.Result) in 登録者.DisplayName, 登録日時=galCalendar.Selected.lblCalendarDay.Text )
⾮表⽰にした「lblCalendarDay」が⽇付を表すラベルだったので、そちらを Filter の材料にします。
ただ、これでは検索結果に何も表示されません・・・
想像していた結果が出てこない場合はエラーを疑うのですが、エラーマークも「!」や「×」などがあります。
いずれもヒントは確認できるので原因を探ります。
SharePoint の『登録⽇時』は「⽇付型」ですが、galCarendar.Selected.lblCalendarDay.Text は「テキスト型」なので比較ができません。どちらかの型に合わせましょう。
Text で書かれた⽇付を「⽇付型」に直す
今回は、「テキスト型」のほうを「⽇付型」に変更します。
使用する関は、DateValue 関数です。
・・・まだ何も表示されません・・・
左側もこの DateValue を使⽤します。
Items = Filter( TblReport, txtSearch.Text in Title, Text(drpCom.Selected.Result) in Company, Text(drpCate.Selected.Result) in Category, Text(drpAuth.Selected.Result) in 登録者.DisplayName, DateValue(登録日時)=DateValue(galCalendar.Selected.lblCalendarDay.Text) )
これで結果をみてみると絞り込みが出来ているのが確認できました。
複数条件で絞り込む場合は、条件を If関数 で繋げていくと考えるのは簡単ですが、それを実装していくとなるとこんがらがってしまいます。(私は)
blank(空白)でもデータでも検索ができる in はおすすめということです。
ViewScreen については完了しました✨
新規作成画面の作成
ツリービューを見ると、初期にヘッダー部分のみコピーした EditScreen があります。日報を作成していく画面とします。
オーサリングメニュー→入力→編集フォーム
透明なコントロールが表示されました。
中にデータが入っていないとこの状態のままという特殊なコントロールということで、フォームと言えば「問い合わせフォーム」などをイメージしますが、今のところは何だコレ状態です。
プロパティ→データソース からデータの接続をします。
ドロップダウンから選択できるようになっているので、そちらから「tblReport」を選択します。
フォームができました!!早い!!
名前:frmInput
🐟データソースを選ぶだけでできちゃうところがすごい✨
プレビューで入力ができそうですが、「表示するアイテムがありません」となりました。
実は、Form というコントロールには、編集モードと新規作成モードの2つがあります。
デフォルトでは、「編集」の状態になっています。
frmInput を選択した状態で、プロパティ→既定モード→新規と変更します。
ここで再度プレビューをしてみると・・・新規入力可能となりました。
日報を登録する
EditScreen の中にボタンコントロールを使⽤し、登録ボタンを作成します。
オーサリングメニュー→入力→ボタン
名前:btnSubmit
テキスト:登録
登録するには SubmitForm 関数 を使⽤します。
SubmitForm(登録する Form 名)
OnSelect = SubmitForm(frmInput)
登録ボタンをクリックすると、frmInput というフォームが送信されます。
プレビューで試してみます。
確認するには ViewScreen で、登録した日付(この日は10/1)を選ぶと、入力した内容が表示されました。
今回の内容はここまでですが、TopScreen から『作成』をクリックすると、またまた「表示するアイテムがありません」と出てきました。
こちらは制約がいろいろとあるようで、設定で補っていきます。
次回はForm に関する新たな関数を学びます。
だんだんと出来上がっていってます✨
この記事が気に入ったらサポートをしてみませんか?