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

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

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

You are not logged in.

Announcement

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


#1 2021-06-17 09:55:14

Raijin3
Member

該当レコードの件数を返したい

例えば、〇歳から△歳までの人数を検索しないで返し表示させる方法を教えて下さい。
〇歳以上とか、〇円以上とかの件数。
宜しくお願いします。

Offline

#2 2021-06-17 10:15:59

Shin
Member

Re: 該当レコードの件数を返したい

グローバルフィールドを2個作ります。
検索条件のフィールドに、それぞれから、仕切り値を入れるかどうかで、, < または ≤、> または ≥ の条件でリレーションを張ります。
そのリレーション先を Count() すればいいです。
範囲ではなく、〇〇以上 という条件だけ求めるのでいたら、別のリレーションを張ることになるのですが、ありえないような条件を設定する(例えば、20歳以上200歳以下)ことで逃げたほうが楽でしょう。
年齢については、レコード側に年齢を計算させているフィールドがあればいいのですが、常に計算させるためには、Get ( 日付 ) を使って、必要時に計算させることになります。このフィールドには索引がつくれず、リレーションが成立しません。ですから、年齢ではなく、生年月日の範囲として設定することをお勧めします。例えば、現在20歳以上 でしたら、生年月日が 2001/6/17 以前 という条件にします。

別の方法として、適当なフィールドをカウントする集計フィールドを作っておきます。デカルト積のリレーションにしておいて、ポータルを表示させrます。ポータルフィルターでレコードを制限すると、そのポータルの中においた集計フィールドが対象レコードを表示してくれます。
これですと、索引は関係なくなりますが、条件を設定するごとに、再表示させるかポータルを更新する必要があります。
ポータルフィルターの条件は、グローバル変数も使えます。

Last edited by Shin (2021-06-17 10:19:40)

Offline

#3 2021-06-18 08:47:59

himadanee
Guest

Re: 該当レコードの件数を返したい

ExecuteSQL関数も使えます。ただしSQL構文の理解が必要です。

#4 2021-06-20 12:52:07

Raijin3
Member

Re: 該当レコードの件数を返したい

Shinさん、ありがとうございます。
「範囲ではなく、〇〇以上 という条件だけ求めるのでいたら、別のリレーションを張ることになる  」
とありますが、その方法も教えて頂けませんでしょうか?
宜しくお願い致します。

Offline

#5 2021-06-21 03:57:22

Shin
Member

Re: 該当レコードの件数を返したい

条件が異なるリレーションを3個張るだけですが。

Offline

#6 2021-06-30 09:19:27

Raijin3
Member

Re: 該当レコードの件数を返したい

なかなか難しいですね。
計算フィールドで導き出す方法はないでしょうか?

年齢は特定され入力されている状況で、全体の中の「〇歳以上の人は△人」の△を計算させるフィールドを作りたいのですが。
宜しくお願いします。

Offline

#7 2021-06-30 09:34:33

チポ
Member

Re: 該当レコードの件数を返したい

そんなに難しいことではないですが、何がわからないのでしょう?

また、ご希望は
> 〇歳以上の人は△人
だけでしょうか?
「以下」は考えなくていい?

その値は全く任意なんでしょうか?
例えば、
10代、20代・・
のような決まった値でしょうか?

Offline

#8 2021-06-30 11:38:37

Shin
Member

Re: 該当レコードの件数を返したい

> 年齢は特定され入力されている状況
特定が、保存されている、という意味でしたら、 なんらかの仕掛けをしないと自動的に日付に連動させることはできないですね。例えば、2011年7月1日生まれの方の年齢は、今日は9才ですが、明日は10才になり、年齢の階層母もかわります。これは無視していいのですか。無視するなら、1年後もこの方は9才でいいのですか。

単なる計算でだすのでしたら、対象レコードが全レコードなら一覧の集計フィールド、または、デカルト積のリレーション(いわゆる×リレーション)を通して List() を使って、年齢のテキスト列を取得します。
その内容をテキストの弛緩や、ループを使ってカウントすると求められますが、この方が上級テクニックが必要ですよ。

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, 10 queries executed - Memory usage: 561.89 KiB (Peak: 568.88 KiB) ]