みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[10.6.8]FileMaker Ver:[12]
ソートした小計パートのみ(ボディパートは削除)のレイアウトににして、順位を制限(トップ10とか)した表示をしたいと考えています。
しかし、小計の件数(順位?)を取得する方法がわかりません。
小計の件数をカウントしたり順位をつけることは出来ないのでしょうか。
集計レイアウトによる集計方法ではできません。
リレーションによる集計法をお試しください。
たとえば、
・ソートフィールドを照合キーとする自己リレーションで小計値をSum()合計式で算出。
・重複レコードからユニークなレコードだけ照合ヒットする 値一覧照合リレーション を張り、
・そのリレーションのポータルに小計値降順ソートの設定をして、トップ10なら10行ポータルとし、
・ソート値や小計値など必要なフィールドを表示します。
以上
なお、「値一覧照合リレーション」は、ここの 過去ログ id=4086 にあります。
●サンプル【 値一覧照合.fp7 】は、 → http://yahoo.jp/box/IdtpqV
・重複しないユニーク値のみの「値一覧」照合が可能です。
・正引きのみ有効です。
・FMP12以降の方は .fp7 → .fmp12 へコンバートしてお使いください
Last edited by Hiro (2016-12-12 03:01:00)
Offline
ソートの指定で
「集計フィールドに基づいて並べ替え」
が有ります。
これを、順位を決定する集計フィールドの降順に指定すると
順位順に並び替えられます。
こうしておいて、最初のレコードから順位を見ていって、
表示外の順位になったら、
それ以降のレコードを対象外にすればいいですね。
Offline
「集計フィールドに基づいて並べ替え」をして
別テーブルからソートフィールド(ユニーク制限)とGetSummary値を
インポートして順位はシリアル値全置換して11位以下を削除とかでも。
Offline
>Hiro様
詳細はまだ理解できていないのですが、「トップ10なら10行ポータルとし、」という事は10位が同率で複数件ある場合などには使用できないという事になるのでしょうか。
>チポ様
「これを、順位を決定する集計フィールドの降順に指定すると順位順に並び替えられます。」
そのようにしています。
「こうしておいて、最初のレコードから順位を見ていって、」
この部分が知りたいのですが理解ができていません。
例えばレコード全件で100件あるとして、集計されたものが、30件になっているとしても、対象レコード数は100件でしたし、
次のレコードへ移動すると表示されていないレコードにも移動してしまいます。
集計された30件の内、ベスト10を表示したいのですが、どのように値を取得すればいいのでしょうか。
質問の仕方に問題があったら申し訳ありません。
例えば、
商品名 個数
りんご 5
ぶどう 4
みかん 3
ぶどう 2
みかん 1
という5件のレコードがあるとします。
商品名別で個数の多い順で小計すると、
商品名 個数
ぶどう 6
りんご 5
みかん 4
となります。
この時の順位を上から1,2,3と表示したり、表示する件数を制限したりしたいのです。
よろしくお願いいたします。
スクリプトで
ソート
最初のレコードへ
$s = ""
$順位 = 0
Loop
If [ $s ≠ ソートフィールド ]
Exit Loop If [ $順位 = 表示順位数 ]
$s = ソートフィールド
$順位 = $順位 + 1
End If
次のレコードへ [ 最後で終了 ]
End Loop
複数レコードを対象外に [ 総レコード数 ]
このような考え方でいいのでは。
Offline
書き落としました。
これを実行するレイアウトにボディがなくても問題有りません。
Offline
>Hiro様
詳細はまだ理解できていないのですが、「トップ10なら10行ポータルとし、」という事は10位が同率で複数件ある場合などには使用できないという事になるのでしょうか。
それなら、余裕を持った行数のポータルに、小計値がトップ10内のレコードだけを表示するポータルフィルタを掛ければ良いです。
もっと簡略な方法でよければ、ただ10行ポータルでスクロールバーを有効にするだけとか?
Last edited by Hiro (2016-12-12 11:48:09)
Offline
集計レイアウトでも実現可能ですよ。一旦ソートした後,
Let (
[
$$pos = Case ( Get ( レコード番号 ) = 1 ; 1 ; $$gr ≠ Table::Group ; $$pos + 1 ; $$pos ) ;
$$gr = Table::Group
] ;
$$pos
)
という式で全置換したフィールドが,順位を持たせておきます。その後は適当に抽出してソート表示(集計レイアウト),で良いです。上の式に少し手を入れれば,同順は同数字にも変更できます。
https://www.dropbox.com/s/8g33c8i6og2q5 … 2.zip?dl=0
Last edited by Shin (2016-12-12 17:00:33)
Offline
別テーブルからインポートのサンプルです。
http://pupld.net/21/161212/a4hyqjzap0/index.cgi
集計上位のみ.fmp12
順位付けのスクリプトの方が倍位になってしまった(;_;)
Offline
Hiroさま・チポさま・旅人さま・Shinさま
様々なご意見・ご指示をありがとうございました。
Shinさまの方法で同順がクリア出来れば、いけそうな気がするので進めてみます。
Offline
Pages: 1
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 530.3 KiB (Peak: 551.2 KiB) ]