みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMA11 Win7
<テーブル>
テーブルA
テーブル集計 (テーブルAの自己リレーション先)
<フィールド>
集計日 日付
集計年月 Year ( 集計日 ) & "." & Right ( 100 + Month ( 集計日 ) ; 2)
集計年月_2 Year ( Date ( Month( 集計日 ) - 2 ; Day ( 集計日 ) ; Year( 集計日 ) ) ) & "." & Right ( 100 + Month ( Date ( Month( 集計日 ) - 2 ; Day ( 集計日 ) ; Year( 集計日 ) ) ) ; 2 )
集計値
トータル
があるとします。
<データ>
集計年月 集計値 トータル
2015.1 55
2015.2 57
2015.3 55
2015.4 67
2015.5 56
2015.6 56
2015.7 30
として、
集計年月 集計値 トータル
2015.1 55 55 ← 過去2ヶ月(11月 12月は数値がないため)
2015.2 57 112 ← 12月は数値がないため
2015.3 55 167
2015.4 67 179
2015.5 56 178
2015.6 56 179
2015.7 30 142
過去3か月の集計のトータルをトータルFに表示したいです。
リレーションを
年月_2 <= 年月
トータルF sum(テーブル集計::集計値)
とした場合、
2015.7 の トータルF だけは 142 と表示されるのですが、
それ以外はその年月までのトータルが表示されてしまいます。
目的の表示にするにはどのような方法があるでしょうか。
宜しくお願いします。
ポータルを表示してみたらレコードが正しく絞られているか分かりやすいかも。
2015.1とかは使ったこと無いので、例えば
最新の「年月」はYear ( 集計日 ) * 12 + Month ( 集計日 )で数値化できます。
前々月の「年月2」は同様にYear ( 集計日 ) * 12 + Month ( 集計日 )-2です。
テーブル テーブル2
年月 >= 年月
でリレーションするとSum(テーブル2::集計値)で全期間の合計Aが出ます。
別リレーション
テーブル テーブル3
年月2 > 年月
を作ってSum(テーブル3::集計値)で3ヶ月前までの合計Bが出るはず。
AからBを引けば出ないかな?
Offline
リレーションを
テーブルA テーブル集計
年月 >= 年月
and
年月2 <= 年月
このように範囲で絞らないとダメでしょう。
また、
年月2を求める計算ですが、
大の月・小の月
を考えると期待通りにいかない場合が有りそうですよ。
月末の場合のルールを決めて、それにそった計算式にしないとダメなのでは。
Offline
旅人さん、チポさん 返信ありがとうございます。
両者の提案を検証しまして
テーブルA テーブル集計
年月 >= 年月
and
年月2 <= 年月
で行う事になりました。
年月2を求める計算についてですが、確かに1月と2月だけでも日数が違いますね。
一般的にルールの決め方とかはあるのでしょうか?
集計年月_2 Year ( Date ( Month( 集計日 ) - 2 ; Day ( 集計日 ) ; Year( 集計日 ) ) ) & "." &
Right ( 100 + Month ( Date ( Month( 集計日 ) - 2 ; Day ( 集計日 ) ; Year( 集計日 ) ) ) ; 2 )
この式だと、
例えば、
集計日が2015/4/30だとすると
Date ( Month( 集計日 ) - 2 ; Day ( 集計日 ) ; Year( 集計日 ) )
これが、
2015/2/30 = 2015/3/2
となりますよね。
求めたいのは二ヶ月前の日付ではなく、二ヶ月前の月ですから
Date ( Month( 集計日 ) - 2 ; 1 ; Year( 集計日 ) )
この日付の月を求めればいいのでは。
また、年月の式は
年 + 月/100
で簡単になりますよ。
Offline
Pages: 1
[ Generated in 0.017 seconds, 7 queries executed - Memory usage: 512.2 KiB (Peak: 516.73 KiB) ]