初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2015-07-22 11:48:04

オイスター
Guest

リレーション間のsum関数による計算

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 と表示されるのですが、
それ以外はその年月までのトータルが表示されてしまいます。

目的の表示にするにはどのような方法があるでしょうか。
宜しくお願いします。

#2 2015-07-22 14:58:57

旅人
Member

Re: リレーション間のsum関数による計算

ポータルを表示してみたらレコードが正しく絞られているか分かりやすいかも。
2015.1とかは使ったこと無いので、例えば
最新の「年月」はYear ( 集計日 ) * 12 + Month ( 集計日 )で数値化できます。
前々月の「年月2」は同様にYear ( 集計日 ) * 12 + Month ( 集計日 )-2です。

  テーブル  テーブル2
  年月  >=  年月
でリレーションするとSum(テーブル2::集計値)で全期間の合計Aが出ます。

別リレーション
  テーブル  テーブル3
  年月2  >  年月
を作ってSum(テーブル3::集計値)で3ヶ月前までの合計Bが出るはず。
AからBを引けば出ないかな?

Offline

#3 2015-07-22 18:20:04

チポ
Member

Re: リレーション間のsum関数による計算

リレーションを

  テーブルA        テーブル集計
         年月  >=  年月
         and
         年月2 <= 年月

このように範囲で絞らないとダメでしょう。



また、
年月2を求める計算ですが、
大の月・小の月
を考えると期待通りにいかない場合が有りそうですよ。

月末の場合のルールを決めて、それにそった計算式にしないとダメなのでは。

Offline

#4 2015-07-23 10:42:58

オイスター
Guest

Re: リレーション間のsum関数による計算

旅人さん、チポさん 返信ありがとうございます。

両者の提案を検証しまして
  テーブルA        テーブル集計
         年月  >=  年月
         and
         年月2 <= 年月
で行う事になりました。

年月2を求める計算についてですが、確かに1月と2月だけでも日数が違いますね。
一般的にルールの決め方とかはあるのでしょうか?

#5 2015-07-23 11:20:56

チポ
Member

Re: リレーション間のsum関数による計算

集計年月_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

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 512.16 KiB (Peak: 516.7 KiB) ]