みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[windows7]
FileMaker Ver:[Filemaker pro Advanced 12]
お世話になります。
以下のような期間を集計したいです(月単位)。
レコードも作業が発生すればどんどん増えていきますが
例として3レコードにしています。
開始日 終了日
A作業 2016/8/5 2016/8/25
B作業 2016/8/25 2016/9/10
C作業 2016/9/10
もし集計日フィールドが...
7/31ならば、対象なし
8/10ならば、A作業=6日(8/5~8/10)
8/30ならば、A作業=21日(8/5~8/25)
B作業=6日(8/25~8/30)
9/20ならば、B作業=10日(9/1~9/10)
C作業=11日(9/10~9/20)
10/5ならば、C作業=5日(10/1~10/5)
集計日フィールドがどんな日付に代わってもそのたびに、
対象期間を月単位で計算するにはどのような計算式を作ればよろしいでしょうか?
なにかスマートな計算式はありますでしょうか。
よろしくお願い致します。
OS:[windows7]
もし集計日フィールドが...
7/31ならば、対象なし
8/10ならば、A作業=6日(8/5~8/10)
8/30ならば、A作業=21日(8/5~8/25)
B作業=6日(8/25~8/30)
9/20ならば、B作業=10日(9/1~9/10)
C作業=11日(9/10~9/20)
10/5ならば、C作業=5日(10/1~10/5)
ここに出てくる 各作業の後ろの日にちは どこから出てくるので?
検索する日付を探すことは
リレーション使えば絞り込めるけど。。。
後ろの日付はデータがないと検索できないのでは?
Last edited by シャチ (2016-11-08 10:29:09)
Offline
集計、というか、表示すれば良いのであれば、条件で検索して、表示データを調整すれば良いでしょうね。
https://www.dropbox.com/s/r1rn7g65r4bgi … 7.zip?dl=0
Offline
スマートでもないし、日付や時刻が苦手な私が想像できた期間範囲条件
を思い付くまま羅列してみただけです。修正や単純化必須で自信無し!!
Let(月初= Date(Month(集計日);1;Year (集計日));
Case((
IsEmpty(開始日)and IsEmpty(終了日)) or (not IsEmpty(終了日) and 終了日 < 月初)or 集計日 < 開始日;0;
IsEmpty(終了日) and 月初 ≤ 開始日 and 開始日 ≤ 集計日;集計日-開始日+1;
IsEmpty(終了日) and 開始日 ≤ 月初;Day (集計日);
開始日 ≤ 集計日 and 終了日 ≤ 集計日 and 月初 ≤ 開始日;終了日-開始日+1;
開始日 ≤ 集計日 and 終了日 ≤ 集計日 and 開始日 ≤ 月初;終了日-月初+1 ;
月初 ≤ 開始日 and 集計日 ≤ 終了日;集計日-開始日+1;
開始日 ≤ 月初 and 集計日 ≤ 終了日;集計日-月初+1;
開始日 ≤ 月初 and 集計日 ≤ 終了日;Day (集計日)
))
Offline
Shinさんと旅人さんのレス見てようやくわた日が誤解していた様だと気づいて、赤面
しかし、もとデータの作り方がわからないと、私には難しい問題の様です。
月単位と言いながら、月の途中での集計なのかな?
どうも考えが遠いので、身を引きます。
Last edited by シャチ (2016-11-08 13:19:46)
Offline
集計日の月の月初と月末を得て、
月初 <= 終了日
and
月末 >= 開始日
が対象レコードです。
その日数は
Min ( 月末 ; 終了日 ) - Max ( 月初 ; 開始日 ) + 1
で求められますね。
終了日が空白なら、
遠い未来の日付を入力する計算フィールドにすればいいでしょう。
集計日がグローバルフィールドならば、
リレーションと計算で求められますが、
他のテーブルで異なる集計日ごとに求めるのなら、スクリプトになりますかね。。
Offline
> 月初 <= 終了日
> and
> 月末 >= 開始日
これだけではダメですね。
and
集計日 >= 開始日
を追加してください。
Offline
動的なポータルフィルターによる作例サンプルをアップしました。
フィルター条件式は、チポさんの考え方と同様です。
(※チポさん #6の「月末」は、→「集計日」のタイポかと?そうすれば#7補正は不用かと?)
●ポータルフィルタ使用サンプル「対象期間の月単位集計.fmp12」 → http://yahoo.jp/box/4YwBXg
Offline
Hiroさん
まったくその通りですね ;;;
月内
と最初から思い込んでの始末でした。。
Offline
皆さま、いろいろとご回答ありがとうございます。
Shin様
サンプル見させて頂きました。
Min、Max関数で、集計日に係る対象期間を簡単に求められるのですね。
この方法で、検討してみようと思います。
ありがとうございました。
旅人様
私も全く同じように、集計日・開始日・終了日をそれぞれ比較しながら計算させておりました。
Shin様の方法で検討してみます。
ありがとうございました。
チポ様
Min ( 月末 ; 終了日 ) - Max ( 月初 ; 開始日 ) + 1という計算で簡単に求められることが分かり
とてもいい収穫になりました。
ありがとうございました。
Hiro様
サンプル確認させて頂きました。
とても立派なもので、こんな風に作れるようもっと勉強します。
やはり、Min、Max関数を使ってみようと思いました。
ありがとうございました。
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 522.23 KiB (Peak: 527.14 KiB) ]