【PowerApps】Filter関数を使って複数条件で検索してみよう

今回は、Filter関数を使用してデータソース内のレコードを複数の条件でフィルタリングする方法を紹介します。

↓Filter関数の基本的な使い方はこちらの記事で紹介しています。

目次

今回用意したデータソース

SharePointに「契約書管理台帳」というリストを用意しました。

列の種類

  • 契約書番号:数値
  • 契約書名:タイトル
  • 契約先:1行テキスト
  • 契約開始日:日付と時刻
  • 契約終了日:日付と時刻
  • 担当部署:1行テキスト
  • 担当者1:1行テキスト
  • 担当者2:1行テキスト

検索窓

今回は、こちらの検索窓を準備しました。

  • 契約書番号:テキスト入力(数値)
  • 契約書名:テキスト入力(テキスト)
  • 契約先:テキスト入力(テキスト)
  • 担当部署:テキスト入力(テキスト)
  • 担当者1:テキスト入力(テキスト)
  • 担当者2:テキスト入力(テキスト)
  • 契約開始日:日付の選択
  • 契約終了日:日付の選択

Gallery【Items】のコード

Filter(契約書管理台帳,

    //契約書番号
    IsBlank(Number.Text) || Number.Text = 契約書番号,
    //契約書名
    StartsWith(Title , Name.Text),
    //契約先
    StartsWith(契約先 , Company.Text),
    //担当部署
    StartsWith(担当部署 , Department.Text),
    //担当者1
    StartsWith(担当者1 , Manager1.Text),
    //担当者2
    StartsWith(担当者2 , Manager2.Text),
    //契約開始日
    'StartData-Start'.SelectedDate <= 契約開始日 || IsBlank(Text('StartData-Start'.SelectedDate)),
    'StartData-End'.SelectedDate >= 契約開始日 || IsBlank(Text('StartData-End'.SelectedDate)),
    //契約終了日
    'EndData-Start'.SelectedDate <= 契約終了日 || IsBlank(Text('EndData-Start'.SelectedDate)),
    'EndData-End'.SelectedDate >= 契約終了日 || IsBlank(Text('EndData-End'.SelectedDate))
    )

ポイント

Filter関数は、結果が trueとなるレコードを返します。

Filter関数は、結果が trueとなるレコードを返すので、検索窓に何も入力していない時は、
全ての条件がtrueとなっていた方が良いです。
Falseとなっている条件が存在した場合、検索窓に何も入力していないのにも関わらずレコードが一つも表示されなくなります。

    //契約書番号
    IsBlank(Number.Text) || Number.Text = 契約書番号,

↓条件式を下の条件式に変更してみます。

    //契約書番号
    Number.Text = 契約書番号,

検索窓「契約書番号」が空欄だった場合、「Number.Text = 契約書番号」のみの条件式だと、Falseを返してしまい、
一つもレコードが表示されなくなってしまいます。

条件式の例

trueを返す条件式を紹介します。

テキスト入力(完全一致)

    //契約書番号
    IsBlank(Number.Text) || Number.Text = 契約書番号,

テキスト入力(完全一致)の場合は、IsBlank関数と組み合わせます。IsBlank関数は空白だった場合は、trueを返します。

テキスト入力(部分一致)

    //契約書名
    StartsWith(Title , Name.Text),

StartsWith関数は、検索窓「契約書名」が空だった場合、trueを返します。

日付の選択

    //契約開始日
    'StartData-Start'.SelectedDate <= 契約開始日 || IsBlank(Text('StartData-Start'.SelectedDate)),
    'StartData-End'.SelectedDate >= 契約開始日 || IsBlank(Text('StartData-End'.SelectedDate)),

こちらも同様に、IsBlank関数と組み合わせることで空の場合、falseを返すのを回避できます。

まとめ

今回は、Filter関数を使用してデータソース内のレコードを複数の条件でフィルタリングする方法を紹介しました。
検索機能を充実させることで、社内のユーザーが使いやすいアプリを作っていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!

管理人

2000年生まれの23才/男/高卒
派遣で車のパーツを製造する企業のDX推進課に勤めています。
極めたい事は魚釣り。フリーランスになりたいのでどなたかおPowerAppsのお仕事ください。保有資格:LPICレベル1/Azure Fundamentals/Azure Solutions Architect Expert(LPICとAzureは業務で使用したことないです。。。)
使える言語:HTML/CSS/JavaScript(jQuery)
こちらに連絡ください。。→info@power-magic.jp

コメント

コメント一覧 (279件)

1 5 6

コメントする

目次