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

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

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

You are not logged in.

Announcement

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


#1 2023-02-10 19:30:56

mytoy
Member

繰り返しフィールドへの順位付け

いつもお世話になっています。
Macinotsh  ファイルメーカー19を使用しています。

繰り返しフィールド「得点」内に数字で得点を入力しています。
繰り返しフィールド「順位」に高得点から降順に順位を振りたいと思っています。

「得点」という繰り返しフィールド24
縦に表示しています
74
130
130
68
98
78

「順位」繰り返しフィールドに
5
1
1
6
3
4

このように順位を表示させることはできないものでしょうか。
入力されたデータは、繰り返しフィールドになっています。
入力データ形式はこのままでなんとか順位を設定したいと思っています。
何卒、よろしくお願いします。

Offline

#2 2023-02-10 21:46:20

mytoy
Member

Re: 繰り返しフィールドへの順位付け

List ( 繰り返しフィールド )
SortValues( List ( 繰り返しフィールド ) )
を使い、

改行区切りフィールドに
130
130
98
78
74
68

と変換はしてみました。
この後、どのようにして、
順番を振るのか、
「順番の繰り返しフィールド」に戻すか、
新たに、フィールドを設定した方が良いのか苦戦中です。

Offline

#3 2023-02-10 22:20:43

mytoy
Member

Re: 繰り返しフィールドへの順位付け

繰り返しフィールドのデータを上から一つづづ変数に取り込みたいと思っています。
get(繰り返しフィールド, 取り出す位置)
となっているのですが、設定がうまくいきません。
$$データ1=get(繰り返しフィールド, 取り出す位置1)
$$データ2=get(繰り返しフィールド, 取り出す位置2)
変数の設定方法も教えていただけませんでしょうか。

Offline

#4 2023-02-10 22:42:38

mytoy
Member

Re: 繰り返しフィールドへの順位付け

繰り返しフィールドは使わない方が良いということは理解しているつもりですが、

すでに作成されている「繰り返しフィールドのデータ」に順位を付けることができれば目的は達成できます。
繰り返しフィールドデータを1番目から順に変数に取り込む方法も教えていただければありがたいと思っています。
よろしくお願いします。

Offline

#5 2023-02-11 00:42:11

mytoy
Member

Re: 繰り返しフィールドへの順位付け

GetRepetition で繰り返しフィールドのデータを全て変数に取り込むことができました。
$$A1 に 74
$$A2 に 130
$$A3 に 130
$$A4 に 68
$$A5 に 98
$$A6 に 78
ここから順位フィールドを6個設定し、スクリプトで順位を決定し、そこに順位を入れるスクリプトを考えてみます。
アドバイスがありましたらよろしくお願いします。

Offline

#6 2023-02-11 02:03:43

Shin
Member

Re: 繰り返しフィールドへの順位付け

While (
[
    lst = List ( 得点 ) ;
    i = ValueCount ( lst )
] ;
    i ;
[
    cnt = cnt + ( GetValue ( lst ; i ) > 得点 ) ;
    i = i ~ 1
] ;
    cnt + 1
)
という計算フィールド(繰り返し)でいかがでしょう。検証していません

Offline

#7 2023-02-11 08:27:35

mytoy
Member

Re: 繰り返しフィールドへの順位付け

Shin 様
ありがとう御座います。
是非試してみます。

本当にありがとう御座いました。

Offline

#8 2023-02-11 09:48:56

mytoy
Member

Re: 繰り返しフィールドへの順位付け

lst = List ( 得点 ) ;
    i = ValueCount ( lst )

の lst を 1st にしていたらこの計算式では一覧を表示できませんとかえってきました、提示頂いた箇所をそのままペーストし lst で通過できました。

次に
    cnt = cnt + ( GetValue ( lst ; i ) > 得点 ) ;
    i = i ~ 1
の箇所で 指定されたフィールドが見つかりませんと cnt  のフィールドを問われています。
どこにcntのフィールドを設定したら良いのか見当がつきません。


今回、順位表示用の繰り返しフィールドを1つ作りました。
そのフィールドに、Shin様に教えて頂いたスクリプトを貼り付けてみました。

このようなフールドの作り方自体良いのか否か私にはわかっていません。
最初の質問した後、たくさんのフィールドを作成し途方に暮れていました。

Shin様 の提案とてもスマートで驚いています。
今回、提示いただいた方法で是非とも順位を表示したいと思っています。
良く理解できていないままの質問でお手数をおかけしますが、よろしくよろしくお願いします。

Offline

#9 2023-02-11 10:39:14

mytoy
Member

Re: 繰り返しフィールドへの順位付け

Shin 様

度々申し訳ありません。
今一度ご教示お願いします。


もう一度最初に帰って新たに作ってみました。

繰り返しフィールド(6)を「名前」「得点」「順位」3つのみ作成してみました。
「名前」「得点」「順位」
名前1  74   …
名前2  130  …
名前3  130  …
名前4  68   …
名前5  98   …
名前6  78   …

ーーーーーーー
順位フィールド(計算フィールド)の内容

While (

[

  lst = List ( 得点 ) ;

    i = ValueCount ( lst )

] ;

  i ;

[

    cnt = cnt + ( GetValue ( lst ; i ) > 得点 ) ;
 
   i = i + 1

] ;

  cnt + 1

)
ーーーーーー
指定したフィールドが見つかりません。というメッセージが出て、
    cnt = cnt + ( GetValue ( lst ; i ) > 得点 ) ;
 

=の後の cnt が選択された状態になります。

どこかに cnt というフィールドを作成する必要があるのでしょうか?

Offline

#10 2023-02-11 15:34:16

Shin
Member

Re: 繰り返しフィールドへの順位付け

最初の設定で、cnt = 0 が必要なんですね。忘れていました。
While (
[
    lst = List ( 得点 ) ;
    i = ValueCount ( lst ) ;
    cnt = 0
] ;
    i ;
[
    cnt = cnt + ( GetValue ( lst ; i ) > 得点 ) ;
    i = i - 1
] ;
    cnt + 1
)

Offline

#11 2023-02-11 16:56:49

mytoy
Member

Re: 繰り返しフィールドへの順位付け

Shin 様

すごくシンプルになりました。
今回は閲覧できることが目的なので、繰り返しフィールドに頼ってしまいました。
このようなことができるとは本当に素晴らしいです。

ただ、甘えついでにもう一件教えてください。
実行結果は次のようになりました。

「名前」「得点」「順位」
名前1  74      3
名前2  130     5
名前3  130     5
名前4  68      4
名前5  98      1
名前6  78      2

100点未満であれば、全て正確に順位を振ってくれますが、
100点以上にのものはと逆に順位が下がってしまいます。

このことを解決する方法を教えていただけないでしょうか。
よろしくお願いします。

Offline

#12 2023-02-11 20:44:56

himadanee
Guest

Re: 繰り返しフィールドへの順位付け

GetValue ( lst ; i )
だとテキストとして比較するので"10"<"2"などとなります。
+0とかして数値に変換して比較すればいいのでは。

ループしなくても、リストをソートしてその中の位置から計算できそうですが...

#13 2023-02-11 21:34:27

mytoy
Member

Re: 繰り返しフィールドへの順位付け

himadanee 様
文字列として判断しているから思い通りの結果が出なかったのですね。
ありがとう御座いました。
GetAsNumber 関数で解決できました。

これまで、お世話いただいた、
Shin 様 himadanee 様
今回も大変お世話になりました。
心より感謝申し上げます。
ありがとう御座いました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 610.5 KiB (Peak: 627.04 KiB) ]