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

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

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

You are not logged in.

Announcement

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


#1 2016-12-12 00:13:16

あたかん
Guest

小計フィールドの表示件数を制限したい

OS:[10.6.8]FileMaker Ver:[12]
ソートした小計パートのみ(ボディパートは削除)のレイアウトににして、順位を制限(トップ10とか)した表示をしたいと考えています。
しかし、小計の件数(順位?)を取得する方法がわかりません。
小計の件数をカウントしたり順位をつけることは出来ないのでしょうか。

#2 2016-12-12 02:21:22

Hiro
Member

Re: 小計フィールドの表示件数を制限したい

集計レイアウトによる集計方法ではできません。
リレーションによる集計法をお試しください。

たとえば、
・ソートフィールドを照合キーとする自己リレーションで小計値を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

#3 2016-12-12 09:17:00

チポ
Member

Re: 小計フィールドの表示件数を制限したい

ソートの指定で
「集計フィールドに基づいて並べ替え」
が有ります。

これを、順位を決定する集計フィールドの降順に指定すると
順位順に並び替えられます。

こうしておいて、最初のレコードから順位を見ていって、
表示外の順位になったら、
それ以降のレコードを対象外にすればいいですね。

Offline

#4 2016-12-12 09:47:26

旅人
Member

Re: 小計フィールドの表示件数を制限したい

「集計フィールドに基づいて並べ替え」をして
別テーブルからソートフィールド(ユニーク制限)とGetSummary値を
インポートして順位はシリアル値全置換して11位以下を削除とかでも。

Offline

#5 2016-12-12 10:43:11

あたかん
Guest

Re: 小計フィールドの表示件数を制限したい

>Hiro様
詳細はまだ理解できていないのですが、「トップ10なら10行ポータルとし、」という事は10位が同率で複数件ある場合などには使用できないという事になるのでしょうか。

>チポ様
「これを、順位を決定する集計フィールドの降順に指定すると順位順に並び替えられます。」
そのようにしています。
「こうしておいて、最初のレコードから順位を見ていって、」
この部分が知りたいのですが理解ができていません。
例えばレコード全件で100件あるとして、集計されたものが、30件になっているとしても、対象レコード数は100件でしたし、
次のレコードへ移動すると表示されていないレコードにも移動してしまいます。
集計された30件の内、ベスト10を表示したいのですが、どのように値を取得すればいいのでしょうか。

#6 2016-12-12 11:05:34

あたかん
Guest

Re: 小計フィールドの表示件数を制限したい

質問の仕方に問題があったら申し訳ありません。
例えば、
商品名 個数
りんご 5
ぶどう 4
みかん 3
ぶどう 2
みかん 1
という5件のレコードがあるとします。
商品名別で個数の多い順で小計すると、
商品名 個数
ぶどう 6
りんご 5
みかん 4
となります。
この時の順位を上から1,2,3と表示したり、表示する件数を制限したりしたいのです。
よろしくお願いいたします。

#7 2016-12-12 11:18:07

チポ
Member

Re: 小計フィールドの表示件数を制限したい

スクリプトで

  ソート
  最初のレコードへ
  $s = ""
  $順位 = 0
  Loop
    If [ $s ≠ ソートフィールド ]
      Exit Loop If [ $順位 = 表示順位数 ]
      $s = ソートフィールド
      $順位 = $順位 + 1
    End If
  次のレコードへ [ 最後で終了 ]
  End Loop
  複数レコードを対象外に [ 総レコード数 ]

このような考え方でいいのでは。

Offline

#8 2016-12-12 11:19:11

チポ
Member

Re: 小計フィールドの表示件数を制限したい

書き落としました。

これを実行するレイアウトにボディがなくても問題有りません。

Offline

#9 2016-12-12 11:34:51

Hiro
Member

Re: 小計フィールドの表示件数を制限したい

あたかん wrote:

>Hiro様
詳細はまだ理解できていないのですが、「トップ10なら10行ポータルとし、」という事は10位が同率で複数件ある場合などには使用できないという事になるのでしょうか。

それなら、余裕を持った行数のポータルに、小計値がトップ10内のレコードだけを表示するポータルフィルタを掛ければ良いです。
もっと簡略な方法でよければ、ただ10行ポータルでスクロールバーを有効にするだけとか?

Last edited by Hiro (2016-12-12 11:48:09)

Offline

#10 2016-12-12 13:54:04

Shin
Member

Re: 小計フィールドの表示件数を制限したい

集計レイアウトでも実現可能ですよ。一旦ソートした後,

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

#11 2016-12-12 14:10:55

旅人
Member

Re: 小計フィールドの表示件数を制限したい

別テーブルからインポートのサンプルです。
http://pupld.net/21/161212/a4hyqjzap0/index.cgi   
集計上位のみ.fmp12
順位付けのスクリプトの方が倍位になってしまった(;_;)

Offline

#12 2016-12-12 17:24:54

あたかん
Guest

Re: 小計フィールドの表示件数を制限したい

Hiroさま・チポさま・旅人さま・Shinさま
様々なご意見・ご指示をありがとうございました。

Shinさまの方法で同順がクリア出来れば、いけそうな気がするので進めてみます。

#13 2016-12-12 18:46:41

Shin
Member

Re: 小計フィールドの表示件数を制限したい

同順の処理を加えました。
https://www.dropbox.com/s/8g33c8i6og2q5 … 2.zip?dl=0

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 530.3 KiB (Peak: 551.2 KiB) ]