みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM初心者です。いつもお世話になっています。
度々の質問失礼いたします。
今回は日付の範囲指定について教えていただきたいです。
【フィールド】
テーブルB::開始日
テーブルB::終了日
テーブルB::作業日(計算式:開始日 & "..." & 終了日 )
テーブルA::検索日
【ポータルレコードのフィルタ】
PatternCount (テーブルB::作業日 ; テーブルA::検索日 )
-------------
上記のようにテーブルBに開始日と終了日 のフィールドを持つレコードがあります。
テーブルAのレイアウトにテーブルBのポータルを置きました。
テーブルAのフィールドにて「検索日」を指定して、検索日が開始日~終了日 の間に該当すれば表示する、という
ポータルレコードのフィルタをかけようとしています。
ヘルプページを参考に上記のように記述してみたのですが、これだと間の日付は表示されませんでした。
例えば
開始日=2019/7/1 , 終了日=2019/7/3 , の場合、
検索日が7/1、7/2、7/3の時に表示されるようにしたいのですが、
7/2の時は表示されませんでした。7/1、7/3の時は表示されています。
調べても解決せず、お力貸していただければと思います。
よろしくお願いします。
参考にしたヘルプ
https://fmhelp.filemaker.com/help/13/fm … t.5.8.html
フィルタに例えば以下のような計算式を指定すれば良いと思います。
If ( テーブルB::開始日 ≤ テーブルA::検索日 and テーブルA::検索日 ≤ テーブルB::終了日 ; True ; False )
この場合は必ずしもIF文にしなくても良いですが、ヘルプの例も参照してください。
https://fmhelp.filemaker.com/help/13/fm … html#27152
PatternCountは「文字列関数」で、文字列の比較を行うことはできますが、数字や日付の大小比較を行うことはできません。
mtさんの方法ですと
"2019/7/1...2019/7/3” という文字列に "2019/7/1" という文字列がいくつ含まれているかという比較処理を行うことになります。
ですから"2019/7/1"や"2019/7/3"はそれぞれ一つ含まれるので1が返りますが、"2019/7/2"は一つも含まれないので0が返ります。
Last edited by koeda (2019-07-23 20:57:28)
Offline
「開始日 & "..." & 終了日」は、検索で使う範囲指定、
計算式での範囲指定は、
・PatternCount (テーブルB::作業日 ; テーブルA::検索日 )
↓
・テーブルB::開始日<=テーブルA::検索日 and テーブルB::終了日>=テーブルA::検索日
Offline
koedaさん Hiroさん
丁寧なご回答ありがとうございます。
... の範囲指定は検索で使えるという意味だったのですね。
大変勉強になりました。
無事解決いたしました。
また機会がございましたらよろしくお願いいたします。
Pages: 1
[ Generated in 0.008 seconds, 11 queries executed - Memory usage: 510.02 KiB (Peak: 514.92 KiB) ]