親テーブルで「案件管理」、子テーブルで「行動記録」(今回行動、次回行動、次回行動日など)を管理しています。
・ 子テーブルの「行動記録」をベースに、リマインダー画面を作りたい
・ リマインダー画面では、親テーブルの案件別に、子テーブルで「次回行動日」が大きい値の「行動記録」のみを表示したい(案件Aに行動記録2件(次回行動日はそれぞれ6/10、6/15)が登録されている場合、次回行動日が6/15の行動記録表示)
現行のリマインダー画面では、全ての行動記録が表示されてしまってますが、特定の日付(次回行動日)が最新の行動記録のみを表示することは可能でしょうか?
ご存知の方がいらっしゃれば、ご教授お願いいたします。
行動記録の子テーブルのスキーマを
Id Business Category Date の4つのフィールドとして解説致します。テーブル名はActionとします。(適宜、ご自身のテーブル・フィールド名称に置き換えられてください)
Businessはrefタイプで親の案件管理テーブルを参照。親子関係の構築のベースとなりここでは案件管理テーブルのidが入ることとなります。CategoryにはNow Nextという値を入れ、今回行動か?次回行動かの種別を管理。そしてdateには日付の値を取得するテーブルです。
目的はbusiness(案件)ごと、且つ、それぞれの案件でcategoryがnextとされているもんもの最新日付、つまりはdateの最大値を返すことです。これを実現するための一歩として、子テーブルにvirtual columnを作成します。タイプはyes/no。
MAXROW("Action", "Date", and([Business]=[_thisrow].[Business],[Category]="Next"))=[_thisrow]
まずMAXROWという関数で、上記の目的、BUSINESS毎且つ、NEXTというカテゴリーに入るROWのうち、DATEが最大のROWのIDを算出。そのIDが[_thisrow], それぞれのrowのidと一致するか否かを検証する計算式です。この式・関数がtrueとして返されるものが目的のrowです。
このvirtual columnがtrueとして返されるrowのみを抜き出します。Sliceを利用。Sliceの条件式は、このvirtual columnの値がtrueという単純な条件式です。ここで作成したsliceをベースにリマインダーというviewを作成されれば、各案件(business)ごとの最新(最大)dateが動的に計算されたviewが作成されるはずです。