見出し画像

PowerApps Filter検索 目から鱗だった話①

PowerAppsを最近社内で使ってもらっているのですが何かと要望が多く
学んだことを記事にします。

アプリ自体は2023年6月にリリースしたのですが、使う人の人数が多いのか自分の力量が足りないのか、要望の数が出るわ😱出るわ😱で

まず要望として上がったのが過去レコードを検索したいというもの

仕事以外の環境でも同じようなアプリがあったほうが家でも学習し易いということで、下記のようなアプリを作りました。

イメージ1
イメージ2

どうせ使るのなら、自分の睡眠時間や運動習慣など健康習慣を記録できるものが良いと考え、上記のような内容にしています。

色々DatePickerやCheckBoxなどでコントロールを組み込んで行くんですが、
普通にFilterするとハマりました😥

日付の選択コントロールでのフィルター

まず2つのDatePickerですが、下記のようにギャラリーのItemsプロパティに書いた場合DatePickerに日付が入っていないと抽出されなかったです😥

Filter(
        データソース,
        日にち>=dteDateStartMain.SelectedDate,
        日にち<=dteDateEndMain.SelectedDate
)
イメージ3

日付が2つとも入っていない場合は、空白ではフィルターしないで欲しいです😥

では、If文で開始日、終了日どちらも入ったいない場合という条件を加えればどうか!?
下記のような条件を記載してみて、混乱してしまいました😱
※DatePicker以外のコントロールの空白条件を考慮する場合、どうすれば…😭

If(
     Or(
     IsBlank(dteDateStartMain.SelectedDate),
     IsBlank(dteRecordingDateEndMain.SelectedDate)
     ),
     //日付が両方とも指定されていない場合
     Filter(
            データソース,
            他の条件),

     //日付がどちらかは指定されている場合
     Filter(
            データソース,
            日にち>=dteDateStartMain.SelectedDate,
            日にち<=dteDateEndMain.SelectedDate),
),

そんな時に、Ifでの切り替えはやめてand,orの書き方でFilterする方法があるとヨウセイさんからお教えいただきました🙇🙇🙇

Filterの外でIf文判定するのではなく、下記のようにFilter内で
||(Or演算子)を用いるとことでDatePickerが選択されていない場合は
フィルターされなくなります。

・入力開始日が空白 Or 日付が指定値以降
・入力終了日が空白    Or   日付が指定日以前

Filter(
データソース,
IsBlank(dteDateStartMain.SelectedDate) || 日にち>=dteDateStartMain.SelectedDate,
IsBlank(dteDateEndMain.SelectedDate) || 日にち<=dteDateEndMain.SelectedDate,

ヨウセイさんもFilterギャラリーの例を記事にしてくださいまして
仕事中はずっとこちらの記事をずっと拝見しておりました🙇‍♂️🙇‍♂️🙇‍♂️

検索は前方一致、部分一致にするかや委任回避するにはどうするかなども考慮していたのもあって、Googleで検索ができずお教えいただけなければ、実装できていなかったです😭

当然コントロールはDatePicker以外にもあるので、コンボボックスやチェックボックスなどの実装方法も記事にいたします😌

検索って完全一致や、部分一致、前方一致、後方一致といった種類もあれば
DatePickerやコンボボックスで値を取ってきて検索する方法もありますよね🤔

PowerAppsの奥の深さを感じました😌


この記事が気に入ったらサポートをしてみませんか?