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

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

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

You are not logged in.

Announcement

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


#1 2017-04-02 03:35:24

ken815
Member

ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

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

#2 2017-04-02 12:45:35

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

まずは 現状の結果がどう行った値が返るのかが知りたい。
結果によって設定条件がわかるかもしれないから。

現状で思いつくのは
1:フィールドのタイプの違い グローバルのフィールドが日付き否か?
2:日付、もしくは請求日に索引ができるものでは無い
   例えば 計算結果で非保存になっている
  コレリレーデョンが聖地つしているなら考えにくい

ということぐらいで
確認すべきことは
ポータルを表示して 該当するものが表示されるか? です。
されていなければ何かの問題アリなんで、計算以前の問題です。

Offline

#3 2017-04-02 15:29:39

ken815
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

シーラカンス様、有難うございます。

表示される内容は、ポータルに表示されている全期間の合計値になります。
上記の例ですと
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

#4 2017-04-02 15:38:27

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

全部が表示されるということなら
リレーションの設定にどこか間違いがあるのだと思います。
もう一度じっくり見てください。

ひょっとすると
選択エーブルを間違えているかもしれないな?
よくあるんです

Offline

#5 2017-04-02 15:48:42

Shin
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

リレーションの張り方が基本的におかしいです。

基本情報::会社名 = 請求情報::会社名
は、ポータルを表示するために必要ですので、そのまま。

それと別に、請求情報のオカレンスを別に作り、

基本情報::会社名  = 請求情報2::会社名
基本情報::日付検索 = 請求情報2::請求日
というリレーションを追加で張り、そのリレーションで集計すれば良いです。

まったく別の方法として、日付検索フィールドをグローバルフィールドにしておいて、請求情報側に、
Case ( 基本情報::日付検索 = 請求情報::請求日 ; 請求情報::金額 )
という計算フィールドを作っておきます。これを集計すれば、今のリレーションのままで集計できます。

Offline

#6 2017-04-02 17:46:23

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

質問された記事のデータを使って
サンプル作りました

http://yahoo.jp/box/9g2CFt
にアップしてあります

Offline

#7 2017-04-02 20:39:21

ken815
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

シーラカンス様、Shin様、ご丁寧に本当に有難うございます。
サンプルデータまで作っていただき、とてもわかりやすかったです。
望み通りに設定することが出来ました。

有難うございました。m(_ _ )m

Offline

#8 2017-04-03 09:30:39

KR
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

横から失礼します

特定のレコードに絞って、ポータルの集計を行うときは、フィールドタイプを集計にして行なっていたのですが、
今回の様にSum関数を利用するメリットや違いなどを教えてください。

Offline

#9 2017-04-03 12:56:51

Shin
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

http://www.filemaker.com/help/15/fmp/ja … rtals.html
に簡単な説明が有ります。

Offline

#10 2017-04-03 13:10:50

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

大雑把な説明ですが、
集計フィールドは、テーブルで検索絞り込みもしくは全レコードの合計(集計)をします。
SUMをつかった場合の合計は、ポータル(リレーション)で絞り込んだ状態の合計(集計)をします。
SUMをリレーション以外で使うと基本的に
そのレコードのフィールドなどの合計を行います。

Offline

#11 2017-04-03 14:09:16

Shin
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

関連テーブルに集計フィールドを作り,それとポータルと同じレイアウトに配置すると、ポータル内での集計値が表示されるんです。
それと、リレーションを通した Sum() との使い分けの話ですよね。

Offline

#12 2017-04-03 18:49:37

KR
Member

Re: ポータル内の値の合計値をグローバルフィールドを使って特定のレコードのみに絞って集計を行いたい。

ご説明ありがとうございました。
使い分けながら理解していこうと思います。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 575.84 KiB (Peak: 592.75 KiB) ]