こんにちはジョージです。某水族館でこれでもかというほどシャチに水をかけられたのは、夏の旅行のよい思い出です!
開始日と終了日をもったレコードの一般的な期間検索
さて旅行といえば、カスタム App でイベント管理をされている方も多くいらっしゃると思いますが「開始日フィールド」と「終了日フィールド」をもった「期間」としてイベントを管理しなければいけないケースも多くあると思います。
このようなイベント管理をカスタム App に採用した場合、特定の期間に発生するイベントを検索するには、通常以下のような検索を行うと思います。
例:2023/08/04 から 2023/08/14 までに行われるイベントを検索する
こんなレコードがあって…
こんな条件を入力すると…
該当結果はこうなります。
3 件のレコードが該当しました!
一般的な期間検索についての考察
さて、ここで「一般的な期間検索」についてよく考えてみましょう。少なくとも私はこんな事を思いました。
- 開始日に「終了日条件以下」を入力、終了日に「開始日条件以上」を入力が、なんとなくイヤ。
- 単独の日付の検索でも開始日、終了日に検索条件を指定しなければいけない。
- 日本語と同じように「開始日…終了日」で検索したい。
いずれも、こういうものだと納得すればよいだけなのですが、こちらはじぇねんちゅの自由研究コーナーですので無理やりなんとかしてみましょう。
日付リストの作成
そこで、こんなテキストフィールド「対象日」フィールドを作ってみました。計算値の自動入力で以下の計算式「日付のリスト」が入力されます。
While ([
~s = GetAsDate(開始日);
~e = GetAsDate(終了日);
~next = ~s;
~list = ""
];
~next ≤ ~e;
[
~list = List ( ~list; ~next );
~next = ~next + 1
];
~list
)
それでは早速検証してみましょう!
単独の日付で検証
まずは単独の日付「2023/08/09」を検索してみます。
うまく検索できました!
期間で検索
次は期間「2023/08/09…2023/08/15」で検索してみましょう。
こちらもうまく検索できました!
まとめ
正攻法で検索する方法、日付リストを作成してから検索する方法の 2 種類を紹介してみましたがいかがでしたでしょうか?どちらの方法でも一応動作するようです。この演算子「…」はなかなか万能でおもしろいですね。他にもおもしろい検索があれば是非教えてください。