今回は複数の条件を指定してレコードを取得する方法をご紹介します!
これまで何度かTipsで、クエリによって複雑な条件を指定することができる「クエリで条件を指定してレコードを取得する」の使い方をご紹介してきました。
でも、クエリの書き方は難しいし、ちゃんと動くか不安・・・(・・;)
そんな方にお勧めしたいのが「取得したレコードを絞り込む」です!
こちらは「全レコードを取得する」や「キーを指定してレコードを取得する」で取得したレコードを、「フィールド値が特定の値ならば」のように条件を指定して絞り込むことができます。
また絞り込んだレコードを「取得したレコードを絞り込む」でさらに絞り込むこともできます!
Customineの基本的な事柄は、こちらの「はじめてのカスタマイズ」をご参照ください。
使用例紹介
売上管理アプリの一覧に自分が担当者になっている同じ月のレコードを種別ごとに集計したいとします。
完成イメージ
カスタマイズの方針
レコード取得のアクションは対象となるレコードが多ければ多いほど、処理に時間がかかってしまいます。
「全レコードを取得する」はレコードが多くなることを考えてなるべく使わないことにし、最初のレコード取得で出来るだけ大きく絞り込めるようにしましょう。
今回の例では、まずは自分が担当者のレコードに絞り込むと大きく絞り込めそうです。
ですが、「キーを指定してレコードを取得する」はユーザー選択フィールドに対応していません。
そこで、自分が担当者のレコードのみを表示する一覧を用意しておき、「一覧の条件でレコードを全件取得する」を使ってレコードを取得し、その後日付で絞り込み、種別でさらに絞り込み、集計して表示する、という流れを採用します。
アプリのフォーム
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
日付 | 日付 | 日付 | 初期値:レコード登録時の日付 |
ユーザー選択 | 担当者 | 担当者 | 初期値:ログインユーザー |
文字列(1行) | 顧客名 | 顧客名 | なし |
数値 | 売り上げ | 売り上げ | 桁区切りあり 入力必須 初期値:0 単位:¥ |
ラジオボタン | 売上種別 | 売上種別 | 選択肢:A , B |
また、「自担当レコード」という一覧を追加します。
Customineの設定
一覧の条件でレコードを取得する
やること
「一覧の条件でレコードを全件取得する」を使います。
条件
一覧画面の中でも「自担当レコード」の一覧のみで表示させたいので、「一覧画面を表示した時」に「現在の一覧が指定の一覧ならば」を加えて、「自担当レコード」を指定します。
今月の月初を計算する(絞り込みの準備)
「今月のレコード」とは今月の1日以降のレコードということです。そこで、先に絞り込むのに必要な今月の月初の日付を取得します。
やること
「特定の日付を取得する」を使います。「日付の種類」は「今月月初」を選択します。
条件
「他のアクションの実行が完了した時」で11番の直後に実行されるようにします。
また、レコードが取得できなかった場合は計算できないので、「レコード件数が1件以上ならば」を追加し、レコードが取得できた場合だけ処理を進めるようにします。
※レコードが取得できなかった場合の処理は後述します。
今月のレコードのみに絞り込む
やること
「取得したレコードを絞り込む」を使います。11番で取得したレコードを日付が12番で計算した今月の月初以降のレコードを取得したいので、「絞り込む前のレコード」は「11」、「条件になるフィールド」は「日付」、「条件」は「大きいか等しい」、「比較値」は「=$12」と入力します。
条件
「他のアクションの実行が完了した時」で12番の直後に実行されるようにします。
「売上種別」が「A」のものにさらに絞り込む
やること
「取得したレコードを絞り込む」を使います。14番で絞り込んだレコードをさらに「売上種別」が「A」のものだけに絞り込みます。「絞り込む前のレコード」は「13」、「条件になるフィールド」は「売上種別」、「条件」は「等しい」、「比較値」は「A」と入力します。
条件
「他のアクションの実行が完了した時」で13番の直後に実行されるようにします。
また、「レコード件数が1件以上ならば」を追加し、レコードが取得できた場合だけ処理を進めるようにします。
※レコードが取得できなかった場合の処理は後述します。
売り上げの合計を計算する
やること
「レコード中のフィールド合計値を計算する」を使います。取得したレコードの指定したフィールドの合計値を計算します。「レコード選択アクション」は「14」、「計算するフィールド」は「売り上げ」を選択します。
条件
「他のアクションの実行が完了した時」で14番の直後に実行されるようにします。
また、「レコード件数が1件以上ならば」を追加し、レコードが取得できた場合だけ処理を進めるようにします。
※レコードが取得できなかった場合の処理は後述します。
合計を一覧の上に表示する
やること
「メニュー位置に文字を表示する」を使って15番で計算した合計値を一覧の上に表示します。「場所」は「一覧画面のメニューの右側」を選択します。
「表示するテキスト」は「今月の売り上げ(Aタイプ):¥${$15}」です。
条件
「他のアクションの実行が完了した時」で15番の直後に実行されるようにします。
レコードが取得できなかったときは「¥0」と表示する
やること
今度も「メニュー位置に文字を表示する」を使います。「場所」は「一覧画面のメニューの右側」を選択します。
「表示するテキスト」は「今月の売り上げ(Aタイプ):¥0」です。
条件
「他のアクションの実行が完了した時」で各アクションの直後に実行されるようにします。
また、レコードが0件になった場合のみの処理なので「レコード件数が0件ならば」を追加します。
これで必要な設定はすべてです。
設定が完了したら、「kintoneアプリへ登録」し、動作チェックしてみましょう。
終わりに
今回は売り上げの金額を必須項目にしましたが、空にしたい場合もあるかもしれません。空だと計算できない場合もありますが、「 取得したレコードを絞り込む」で金額が空でないレコードだけに絞り込むこともできます!
「 取得したレコードを絞り込む」は非常に汎用性が高く、「クエリで条件を指定してレコードを取得する」の代わりになるだけでなく、カスタマイズの自由度を大幅に上げてくれるでしょう!驚くような機能が実現できるかも!
Customineドキュメントやサポートページもぜひご活用ください。