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

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

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

You are not logged in.

Announcement

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


#1 2014-02-04 10:50:17

yamada
Guest

フィールド内一致項目のカウント

以下のような集計はどのようにしたらできますでしょうか?
OS、バージョンに関係なくファイルメーカーでの一般論で
お聞きしたいのですが。

開催国フィールド内に改行区切りで二つまで国名が入ります。
(国名が0個またはひとつの場合もあります)

レコード1 開催国F
JAPAN(改行)
CHINA

レコード2 開催国F
THAI(改行)
JAPAN

レコード3 開催国F
JAPAN(改行) 同じ国名が重複する場合もあります。
JAPAN

レコード4 開催国F
KOREAN(改行)
JAPAN


というフィールド内容のレコードが現在4つあるとします。
それと国名テーブルがあり、
国名フィールド、合計フィールドがあります。

国名F 合計F

JAPAN 5個
CHAINA 1個
THAI 1個
KOREAN 1個

のように集計して合計するにはどのような手法で
できますでしょうか?

#2 2014-02-04 10:55:08

tim
Guest

Re: フィールド内一致項目のカウント

リレーションを
国名=開催国
PatternCount(¶&List(::開催国)&¶;¶&国名&¶)

List関数がないバージョンでは計算では無理かな~

#3 2014-02-04 11:09:41

yamada
Guest

Re: フィールド内一致項目のカウント

ありがとうございます。
PatternCountを使うんですね。
式内に改行マークがそれぞれ前後に入ってる意味がわからないのですが、
どのような意味でしょうか?

>List関数がないバージョンでは計算では無理かな~

そうですかぁ。
一般論としてきいたのはそんな特殊な関数は使わないと思っていたのですが、
Listが無いような場合は難しいですね。
同じようなことをFM12とFM8でやりたいなと考えていたのです。
FM8ではListがないのでやはりダメですかね。。。

#4 2014-02-04 11:38:20

チポ
Member

Re: フィールド内一致項目のカウント

国名を二つのフィールドに展開すれば数えられるでしょう。

でも、
別テーブルにするのが基本ですよね。

Offline

#5 2014-02-04 11:49:19

yamada
Guest

Re: フィールド内一致項目のカウント

timさん、
書いていただいた式をFm12でやってみました。
数値が合わないので改行マークの連結をはずしました。
そうすると計算が合いました。

チポさん、
二つのフィールドにすればいいのはわかっていたのですが、
なんとかこのままで出来ないかと考えてみました。
それと、別テーブルにするというのはどういうことでしょうか?
どれとどれを別テーブルにするのでしょう。。。

#6 2014-02-04 11:59:51

チポ
Member

Re: フィールド内一致項目のカウント

計算フィールドを二つ作り、
現状からその二つに分ければ集計できるでしょう。


別テーブルとは、
1国名を1レコードとして、現テーブルとはユニークな値でリレーション。

これで現テーブルのポータルで国名が表示でき、
国名ごとのカウントも簡単ですよね。

Offline

#7 2014-02-04 12:03:53

yamada
Guest

Re: フィールド内一致項目のカウント

チポさん、
>別テーブルとは、
>1国名を1レコードとして、現テーブルとはユニークな値でリレーション。
>
>これで現テーブルのポータルで国名が表示でき、
>国名ごとのカウントも簡単ですよね。

現在最初に書いたような国名テーブルがすでにあり、リレーションしています。
その上でカウントしようとしているのですが、、、なにか私が勘違いしていますか?

#8 2014-02-04 12:08:52

チポ
Member

Re: フィールド内一致項目のカウント

いや、違います。

現状の改行で入力しているフィールドをやめて、
それを別テーブルにしては。

と提案しています。

Offline

#9 2014-02-04 12:15:28

yamada
Guest

Re: フィールド内一致項目のカウント

チポさん、

開催国テーブル1と開催国テーブル2と国名テーブルということですか?

#10 2014-02-04 12:36:37

tim
Guest

Re: フィールド内一致項目のカウント

前後に改行を付けるのは、部分一致を除外するためです。(NORTH KOREAがあるとKOREAの数に勘定される)

Positionじゃないから途中の改行を2個にしないとだめだった。
PatternCount(¶&Substitute(List(::開催国);¶;"¶¶")&¶;¶&国名&¶)

#11 2014-02-04 12:42:00

yamada
Guest

Re: フィールド内一致項目のカウント

timさん、
今それに気づきまして出来ました。
ありがとうございます。
FM12ではこれでなんとかいけそうですが、Listの使えないFM8でどうするかですね。
そちらはチポさんにご意見いただいた方法で考えて見ます。

#12 2014-02-04 13:16:38

Shin
Member

Re: フィールド内一致項目のカウント

ポータルを loop でざっと舐めて、フィールドに改行区切りで取り込んでくればいいでしょう。

PatterCount 使わないで、
ValueCount ( FilerValue ( List ( ::開催国 ) ; 国名 ) )
でもいけるはずです。

Offline

#13 2014-02-04 13:25:55

tim
Guest

Re: フィールド内一致項目のカウント

できるだけ古そうな関数だけ使ったつもりだったが、ListよりFilterValuesの方が古かった^^;

フィールド2個とか、テーブルで最大2レコード、にすれば、Countで簡単。

#14 2014-02-04 13:36:52

yamada
Guest

Re: フィールド内一致項目のカウント

Shinさん、
ありがとうございます。
FM12ではなんとかできました。FilterValueも使えるんですね。
ただ、やはりこちらもListがあるので対象バージョンが限られますね。

今、FM8用にはフィールド2個に分けてCountの方法でなんとか実現できました。

List関数をなんとかFM8で再現する方法はないんでしょうかね。。。
カスタム関数のページをのぞいたところ、あるにはあるのですが、わざわざ重複内容は省かれるという
機能が入っておりまして、残念ながら無理そうでした。そのカスタム関数を改造すればいいのでしょうが、
私には敷居が高いので無理そうです。

#15 2014-02-04 13:50:44

Hiro
Member

Re: フィールド内一致項目のカウント

元来FM標準の集計機能は、レコード単位で集計を行います。集計データがレコード毎に分かれているのが基本です。
本事案のような場合通常は、そのような別テーブルを作ってそこで集計機能を適用します。
別テーブルに書き出す定石手法は、
  ・リスト[2]データ → ・繰り返し[2]計算フィールドへ → ・別テーブルへインポート(+「繰り返し値をレコード分解」オプション指定)

Offline

#16 2014-02-04 21:03:17

yamada
Guest

Re: フィールド内一致項目のカウント

皆様ありがとうございました。
すこし課題はありますが、希望のものを出すことができましたので、
ひとまず解決にしておきます。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 529.46 KiB (Peak: 550 KiB) ]