みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
1テーブルの、名簿のようなものがあります。
ID, 出席番号、氏名、などと、グループNoがあります。同じグループには、連続した出席番号の人しか入れません。
グループNo同士で自己リレーションが張ってあり,Count(自己リレーション::グループNo)として,同じグループに所属する人数をカウントしています.
これを「何人グループか」というフィールド名にしています.
一方、グローバルフィールド「定数」があり,そこには定数16が入っています.(この定数はたまに変わります)
ここで、「定数=何人グループか」、をリレーションすることで、16人グループが全部で何グループあるか、集計することはできるでしょうか?
Count()の部分が非保存の計算フィールドなので、できないかな、とも思ったのですが、片方がグローバルなので何とかなるような気もしています。
これまでスクリプトでやってきたのですが、リレーションを使ってもっとシンプルに、できるのならばやってみたいのですが、どなたかお知恵を拝借できますでしょうか?
よろしくお願いします.
Offline
結論的に言って、そのリレーションではできません。
リレーションの照合先のキーフィールドは、索引が必須だからです。
リレーションに替わる代案の一例として、
フィルター・ポータルにカウント集計フィールドで結果表示するのはどうでしょう。
・「何人グループか」フィールドの式は、(グループの先頭レコードだけに人数が入るよう、)
Case(自己リレーション::ID=ID; Count(自己リレーション::グループNo))
・IDフィールドの数をカウントする集計フィールドを用意しておく
・デカルト積[X]のポータルに以下の条件式のポータルフィルターを掛け、その1行ポータル中に上の集計フィールドを設置する
定数 = Xポータル::何人グループか
Offline
Hiroさん、ありがとうございます。
やっぱりそうなのですね。
ご紹介いただいた代案の方法はちょっとトリッキーで、なかなか自分には使いこなせそうもないので、やはり地道にスクリプトで処理することにしました。
お世話になりました。
Offline
Pages: 1
[ Generated in 0.013 seconds, 7 queries executed - Memory usage: 505.28 KiB (Peak: 516.16 KiB) ]