みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
またおねがいします。
ポータルフィルタと自己リレーションを使って商品テーブルを検索する仕組みを作ったのですが、
その商品テーブルの関連テーブルである売上と仕入テーブルから各々の金額の集計フィールドを持って来て、
ポータルのレコードに載せると、商品毎の売上集計と仕入集計が出せました。
そして今度はポータルでフィルタされた全ての商品レコードの売上集計を出す為に、商品テーブルに計算フィールドで
sum(売上テーブル::売上集計)というのを追加したのですが、そこではフィルタ関係なく売上テーブルの全合計が出るだけです。
ポータルフィルタで絞り込まれた全商品レコードの関連レコードだけをsumする事は出来ないでしょうか?
※※※ごめんなさい凄く大切な事を言うのを忘れていました。ポータルフィルタに絞りを任す為に商品テーブルとその自己リレーションは
×(←なんと言うのか分からない、、。)で結んであります。
Last edited by apo (2013-11-04 18:45:53)
Offline
Sumでなく集計フィールドを配置します。
ポータルフィルタは見かけ上だけで計算すると全関連データになります。
ありがとうございます。
ごめんなさい凄く大切な事を言うのを忘れていました。ポータルフィルタに絞りを任す為に商品テーブルとその自己リレーションは
×(←なんと言うのか分からない、、。)で結んであります。。。
sumでなく集計フィールドを配置という事ですが、売上の集計フィールドをポータルの外に持ち出してもポータルの見た目の
レコードだけの合計にはならない様です。
Offline
売上の集計フィールドをポータルの外に持ち出してもポータルの見た目の
レコードだけの合計にはならない様です。
そのポータルを複製して1行だけにして、そこに集計フィールドを配置します。
Offline
ありがとうございます。
ポータルをコピーアンドペーストで複製し、一行表示に設定しましたが、
やはりその表示されている行の商品の集計が出るだけで複製元に置くのと変わらないのですが、
何かやり方が抜けているのでしょうか?
Offline
ポータルテーブル側で集計フィールド(売上の合計)を作り、
それを複製した1行ポータルフィルタ内に置いて見ると、
フィルタを反映した合計結果が得られます。
Offline
>商品テーブルの関連テーブルである売上と仕入テーブルから各々の金額の集計フィールドを持って来て
こっちをSUM()にしないと、商品ごとの合計金額がポータル内のテーブルにないですよね。
このSUMのフィールドHIROさんの「売上」とみなして使えばできるでしょう。
ありがとうございます。
商品テーブルをソースにする一行ポータルに売上テーブルの売上金額を集計する集計フィールドを置いてもその商品の集計しか出ません。
(ちなみにレイアウトは商品テーブルの自己リレーションのテーブル)
代わりに売上テーブルの売上金額をsumする計算フィールドを商品テーブルに作り、それを置く。で良いのでしょうか?
しかし、それをやってみたのですが、一体どこから計算したのか分からない数字が出てきます。。。
Offline
最初の発言にある
>sum(売上テーブル::売上集計)というのを追加したのですが、そこではフィルタ関係なく売上テーブルの全合計が出る
これを見ると、商品と売上のリレーションができてないでしょう。(=でなくXになってる)
=にすれば「商品ごとの合計金額がポータル内のテーブルに」できますから、それを合計する集計フィールドを作ればいいのでは。
Offline
ありがとうございます。
元々このレイアウトはグローバルフィールドにキーワードを入れ、ポータルフィルタを利用してリレーションで出来ない
柔軟な検索をしようとしています。なので、=で結ぶ事が初めからしていませんでした。その検索結果を集計したい
というのが当初の目的でした。
リレーションが×の状態でも商品ごとの合計金額はポータルの行に集計フィールドを入れると出せたのですが、
ポータルに表示されている値の集計は出来ませんでした。
もしかして検索機能で検索し、その結果を後部統計で集計すれば良いと思うのですが、レイアウトの自由が
効かないのが難点です。。
Offline
フィルタしたポータル内の合計は、そのポータル内のテーブルの集計フィールドを配置すればできます。
集計フィールドの集計対象がポータル内のテーブルにないので、Sum(売上::金額)で作ります。ここのリレーションが=です。
ありがとうございます。
Layouterさん
商品テーブルと売上テーブルは=で繋がれていますが、その事ではないのでしょうか?
自分の頭の中の整理もかねてまとめてみます。
リレーションで絞りきれない柔軟な検索をする為にポータルフィルタを使ってレコードを絞ろうと思い、
商品テーブルの自己リレーションをソースにするレイアウトに商品テーブルがソースであるポータルを載せています。
検索キーを入れる用途の商品テーブルの自己リレーションのグローバルフィールドから、
検索対象の商品テーブルのフィールド(例えば商品名フィールド)が×で繋がれています。
検索キーを入れると、ポータルフィルタに則った絞られたレコード群がポータルに表示されます。
それら商品別のレコードに商品テーブルから商品番号が=で結ばれた売上テーブルの売上金額集計フィールドを載せると、
その商品だけの売上集計金額が表示されます。また、商品テーブルでsum(売上テーブル::売上金額)として
商品テーブル側で売上集計金額を作っても同様の結果になります。
そこでポータルに表示されている絞られた全てのレコードの売上金額を集計しようと思ったのですが、
こちらで教えて頂いたそのポータルを複製し一行にしたポータルを置き、集計フィールドを使ったり
sumを使ったりしたフィールドを置いても単に一行になっただけで元のポータルと同様の結果になりました。
という事でした。
Last edited by apo (2013-11-06 11:21:47)
Offline
バージョン書いてないけど12ですよね?
>その商品だけの売上集計金額が表示されます。
それを集計する集計フィールドを作って、それをポータル内に配置します。自己リレーションだからテーブルを間違えないこと。
元々は、
http://www.filemaker.com/12help/jp/html … tml#168402
「レコードのフィルタは、計算、集計、検索条件の結果に影響を及ぼしません。」
だったので、どうしてもわからないならフィルタを使わないリレーションで集計した方が簡単かもしれない。
http://www.filemaker.com/12help/jp/html … tml#719130
「どこでも」とありますが、フィルタのあるポータル内の集計は当然そのポータル内に配置した場合のみ可能です。
ポータルフィルタの内容はどんなのですか?
絞り込むフィールドは単数、もしくは複数でしょうか。
通常の=リレーションでもグローバルフィールドをチェックボックスにして選んだりとかもできますけど。
Offline
ありがとうございます。
Layouterさん
商品テーブルから商品番号が=で結ばれた売上テーブルの売上金額集計フィールドをまた商品テーブルで集計する集計フィールドを作って
一行ポータルに載せたらポータルで絞っただけの値が無事表示されました!ありがとうございました!以前にも同様の事をした様な気が
しますがやり方が間違えていたのか。。。
keimaさん
絞り込むフィールドは複数で、曖昧検索だったりある数値間の抽出だったりします。
Last edited by apo (2013-11-06 15:33:58)
Offline
売上の集計フィールドをポータルの外に持ち出してもポータルの見た目の
レコードだけの合計にはならない様です。そのポータルを複製して1行だけにして、そこに集計フィールドを配置します。
私も似たような事例に悩まされているのですが、
上記の集計フィールドを配置するというのはどのような状況でしょうか?
単にレイアウトモードで1行のポータルの真上に乗せるだけですか?
操作のイメージがつかめず、うまくいない状況です。
上記の集計フィールドを配置するというのはどのような状況でしょうか?
単にレイアウトモードで1行のポータルの真上に乗せるだけですか?
操作のイメージがつかめず、うまくいない状況です。
横からですみません。
まさる さんの書かれているとおり、
1行のポータルを作成し、その上に集計フィールドを乗せるだけです。
この際に気を付けるのは集計したいポータルと同じポータルフィルタを設定することです。
ポータル内に設置された関連レコードの集計フィールドは
ポータルフィルタが設定されていれば、フィルタ後の関連レコードの集計になります。
複数行のポータルで集計が毎行表示されていると不格好なので、
同じポータルフィルタを設定した1行だけのポータルを設置して塩梅よく配置するといった使い方をします。
Last edited by Moz (2014-05-19 10:10:17)
Offline
Mozさん、早速ありがとうございます。
基本的な事をお聞きするようで申し訳ありませんが、
集計フィールドのフィルタはどこで設定するのでしょうか?
フィールドオプションにはフィルタを設定するような箇所が見つかりませんでした。
現状のフィルタなしで、一行のポータルの上に集計フィールドを乗せると、
ブラウズモードで文字が重なって表示されるだけですが、
これがうまくいくと、合計値だけが表示されるようになるという事でしょうか?
毎度、お手数をおかけして申し訳ありませんが、ご確認のほど、よろしくお願いいたします。
>集計フィールドのフィルタはどこで設定するのでしょうか?
集計フィールドはポータルの関連テーブルに作り、フィルタはポータルで設定です。
>現状のフィルタなしで、一行のポータルの上に集計フィールドを乗せると、
>ブラウズモードで文字が重なって表示されるだけですが、
フィールドを重ねるのではありません。
元のポータルを複製し、別のところに配置し、一行だけにして、フィールドをひとつだけにして
それを関連テーブルの集計フィールドに差し替えます。
Offline
keimaさん、ご回答ありがとうございます。
無事解決いたしました!
フィルタされたポータルの集計の件で、一旦解決したと言ったのですが、
やはりうまくっていませんでした。
keimaさんの下記の教えの通りやったところ、
ポータルの集計はできたのですが、フィルタ設定が反映されない状況です。
---------------------------------------------------
>集計フィールドのフィルタはどこで設定するのでしょうか?
集計フィールドはポータルの関連テーブルに作り、フィルタはポータルで設定です。
>現状のフィルタなしで、一行のポータルの上に集計フィールドを乗せると、
>ブラウズモードで文字が重なって表示されるだけですが、
フィールドを重ねるのではありません。
元のポータルを複製し、別のところに配置し、一行だけにして、フィールドをひとつだけにして
それを関連テーブルの集計フィールドに差し替えます。
---------------------------------------------------
具体的には、ポータルの表示は、あるトリガーによって、
表示されないフィルタを設定しているのですが、
集計ではそれが無視されてしまいます。
下記の様な感じです。
【ポータルの表示】
50,000円
30,000円
20,000円
【集計結果】
180,000円
※フィルタで非表示にしている80,000円までカウントしているようです。
---------------------------------------------------
どなたか、解決方法が分かる方がいらっしゃいましたら、ご教示いただけますでしょうか?
よろしくお願いいたします。
トリガスクリプトの最後に、
ウィンドウ内容の再表示[キャッシュ結合結果を書き込む]
を追加する。
【集計結果】
180,000円
※フィルタで非表示にしている80,000円までカウントしているようです。
集計結果のフィールドをフィルタ設定したポータル内にいれていますか?
Offline
timさん、ご返答有難うございます。
ウィンドウ内容の再表示[キャッシュ結合結果を書き込む]
とはどちらで設定すればいいのでしょうか?
初歩的な質問ですみません。
---------------------------------------------------
keimaさん、ご返答有難うございます。
下記のポータル内に入れるというのはどのようにすればいいのでしょうか?
一応、ポータルと同じテーブル内にフィールドを設定してはいるのですが。。
> 集計結果のフィールドをフィルタ設定したポータル内にいれていますか?
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 585.59 KiB (Peak: 622.49 KiB) ]