みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FM12を利用しています。
グローバルフィールドに入力した内容に従ってポータル内の数値の合計値の集計を行い、表示したいと考えています。
基本情報というテーブルのレイアウトに請求情報をポータルで表示しています。
リレーション
基本情報::会社名ーーーー=ーーーー請求情報::会社名
基本情報::日付検索 請求情報::請求日ーーーー=----基本情報2::日付検索
基本情報::合計金額 請求情報::金額
基本情報::日付検索(グローバルフィールド)
基本情報::合計金額(計算 | Sum(請求情報::金額))
ポータル内
会社名がテスト株式会社
会社名 | 請求日 | 金額
テスト株式会社 |2017/03/31 |100
テスト株式会社 |2017/03/31 |200
テスト株式会社 |2017/02/29 |150
テスト株式会社 |2017/02/29 |300
テスト株式会社 |2017/02/29 |150
テスト株式会社 |2017/01/31 |100
テスト株式会社 |2017/01/31 |200
テスト株式会社 |2017/01/31 |500
と設定しましたが、日付検索に2017/03/31を入力した場合に、基本情報::合計金額が300になりません。
どこがおかしいでしょうか。
日付検索に2017/03/31を入力した場合に、
100と200の集計値
300
を表示したいと考えています。
よろしくお願い致します。
Offline
まずは 現状の結果がどう行った値が返るのかが知りたい。
結果によって設定条件がわかるかもしれないから。
現状で思いつくのは
1:フィールドのタイプの違い グローバルのフィールドが日付き否か?
2:日付、もしくは請求日に索引ができるものでは無い
例えば 計算結果で非保存になっている
コレリレーデョンが聖地つしているなら考えにくい
ということぐらいで
確認すべきことは
ポータルを表示して 該当するものが表示されるか? です。
されていなければ何かの問題アリなんで、計算以前の問題です。
Offline
シーラカンス様、有難うございます。
表示される内容は、ポータルに表示されている全期間の合計値になります。
上記の例ですと
100+200+150+300+150+100+200+500になりますので
表示されるのは1600になります。
基本情報::日付検索(テキスト グローバルフィールド)
請求情報::請求日 (テキスト)
請求情報::金額(計算(Sum() 非保存)
基本情報::合計金額(計算(Sum() 非保存)
ポータル内は会社名に紐づいて
会社名 | 請求日 | 金額
テスト株式会社 |2017/03/31 |100
テスト株式会社 |2017/03/31 |200
テスト株式会社 |2017/02/29 |150
テスト株式会社 |2017/02/29 |300
テスト株式会社 |2017/02/29 |150
テスト株式会社 |2017/01/31 |100
テスト株式会社 |2017/01/31 |200
テスト株式会社 |2017/01/31 |500
のように表示されています。
リレーションが
基本情報ーーー=ーーー請求情報ーーー=---基本情報2
になっていることがなにかおかしい気もしています。
Sumの合計値が会社名で絞られているような、、、
よろしくお願い致します。
Offline
全部が表示されるということなら
リレーションの設定にどこか間違いがあるのだと思います。
もう一度じっくり見てください。
ひょっとすると
選択エーブルを間違えているかもしれないな?
よくあるんです
Offline
リレーションの張り方が基本的におかしいです。
基本情報::会社名 = 請求情報::会社名
は、ポータルを表示するために必要ですので、そのまま。
それと別に、請求情報のオカレンスを別に作り、
基本情報::会社名 = 請求情報2::会社名
基本情報::日付検索 = 請求情報2::請求日
というリレーションを追加で張り、そのリレーションで集計すれば良いです。
まったく別の方法として、日付検索フィールドをグローバルフィールドにしておいて、請求情報側に、
Case ( 基本情報::日付検索 = 請求情報::請求日 ; 請求情報::金額 )
という計算フィールドを作っておきます。これを集計すれば、今のリレーションのままで集計できます。
Offline
質問された記事のデータを使って
サンプル作りました
http://yahoo.jp/box/9g2CFt
にアップしてあります
Offline
シーラカンス様、Shin様、ご丁寧に本当に有難うございます。
サンプルデータまで作っていただき、とてもわかりやすかったです。
望み通りに設定することが出来ました。
有難うございました。m(_ _ )m
Offline
横から失礼します
特定のレコードに絞って、ポータルの集計を行うときは、フィールドタイプを集計にして行なっていたのですが、
今回の様にSum関数を利用するメリットや違いなどを教えてください。
Offline
Offline
大雑把な説明ですが、
集計フィールドは、テーブルで検索絞り込みもしくは全レコードの合計(集計)をします。
SUMをつかった場合の合計は、ポータル(リレーション)で絞り込んだ状態の合計(集計)をします。
SUMをリレーション以外で使うと基本的に
そのレコードのフィールドなどの合計を行います。
Offline
関連テーブルに集計フィールドを作り,それとポータルと同じレイアウトに配置すると、ポータル内での集計値が表示されるんです。
それと、リレーションを通した Sum() との使い分けの話ですよね。
Offline
ご説明ありがとうございました。
使い分けながら理解していこうと思います。
Offline
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 580.93 KiB (Peak: 597.84 KiB) ]