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

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

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

You are not logged in.

Announcement

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


#1 2017-12-27 10:01:30

ハタ坊
Member

レコード数の抽出

お世話になります。

現在レコード数が2000程度のデータベースを作成しています。
設備や部品などのデータベースでそれぞれの経過年数を「経過年数」フィールドに数字で表しています。
全ての「経過年数」フィールドに数字が入っているわけではなく空欄の物も200個ぐらい存在します。

そのすべてのレコードを「経過年数」フィールドの値が
空欄、1~5、10以下、15以下、20以下、21以上というような感じでレコード数を抽出したいです。

その際に、新たなフィールドを
「空欄」
「1~5」
「10以下」
「15以下」
「20以下」
「21以上」と作成し、
そのそれぞれのフィールドに対して計算式を当てはめて数値を出していくのでしょうか?
またその計算式はどのようなものになるのでしょうか?
ぜひ教えてください。

よろしくお願いいたします。

Offline

#2 2017-12-27 11:00:29

チポ
Member

Re: レコード数の抽出

新たなフィールドは一つでいいです。

そこへ
空欄か各年代の値を入力し、
もう一つ集計フィールドを作り、上記のフィールドのカウントとして、
このフィールドをソート対象とした小計パートに配置
そのフィールドでソートすれば集計できます。

空欄・年代のソートを思う様に並べるには
その値一覧を作ってそれでソートすればいいですね。

Offline

#3 2017-12-27 12:00:36

ハタ坊
Member

Re: レコード数の抽出

早速の返信、ありがとうございます。

すいません。初心者なものでせっかくいただいたアドバイスがよく理解できません。

>もう一つ集計フィールドを作り、上記のフィールドのカウントとして、
>このフィールドをソート対象とした小計パートに配置
>そのフィールドでソートすれば集計できます。

これはリスト形式で、パートの定義の小計のパートを作成し、そこに集計フィールドを作成するのでしょうか。

上記のフィールドのカウントとしてというのが分かりません。

大変申し訳ないのですが、もう少しご教授願えませんでしょうか?

よろしくお願いいたします。

Offline

#4 2017-12-27 13:25:15

チポ
Member

Re: レコード数の抽出

フィールド定義でフィールドを一つ作り、
タイプを集計とし、そのオプションでカウントとして適当なフィールドを指定します。

Offline

#5 2017-12-27 16:14:41

ハタ坊
Member

Re: レコード数の抽出

ありがとうございます。
おかげさまでだいたいイメージ通りいきました。

しかし、空欄のレコード数が0と表示されてしまします。
これはどうしてなんでしょうか?

空欄のレコード数も○○件と表示するにはどうすればよいでしょうか。

よろしくお願いいたします。

Offline

#6 2017-12-27 16:44:08

チポ
Member

Re: レコード数の抽出

集計フィールド・カウントは、
指定されたフィールドに不正でない値が入力されたフィールドを数えます。

空欄や、不正な値のフィールドはカウントされません。

Offline

#7 2017-12-27 17:52:58

Shin
Member

Re: レコード数の抽出

空欄には、区分に0などを設定しておくといいでしょうね。

Offline

#8 2017-12-27 22:46:55

Hiro
Member

Re: レコード数の抽出

別板(id=#7402) の「グラフ作成の為のデータ収集」が目的とすると、

設定がいろいろ面倒な集計機能は使わず、
結果を格納するグローバルフィールドに計算値による「フィールド内容の全置換」を適用して、
簡単に一発一括処理する作例サンプルをアップしました。
設定や式詳細はサンプルを解析ください。

●サンプル「集計件数の円グラフ化.fmp12」→ https://yahoo.jp/box/3ku17L

Last edited by Hiro (2017-12-28 13:32:24)

Offline

#9 2017-12-28 15:59:36

ハタ坊
Member

Re: レコード数の抽出

Hiro様、お世話になります。

サンプルデータを作成していただきましてありがとうございます。
早速自分なりに調べてみたのですがよく理解できませんでした。

変数を設定[$#dumy;値:// 繰り返[6回]変数$cntに初期値0を設定 $cnt[1~6]=0

Let(
[
$i=0;
$f=
  "Case($i=6; \"\";
    Let([
     $i=$i+1;
     $cnt[$i]=0
    ]; Evaluate($f))
  )"
];
Evaluate($f)
)

このスクリプトは何を返すのですか。
関数スクリプト辞典で色々調べたのですがよくわかりません。
解析もまともにできなくて情けないのですが詳しい解説をお願いできないでしょうか・
よろしくお願いいたします。

Offline

#10 2017-12-28 16:18:27

Shin
Member

Re: レコード数の抽出

区分用のフィールドは、
Case (
IsEmpty ( 経過年数 ) ; 0 ;
Min ( Div ( 経過年数 + 4 ; 5 ) * 5 ; 21 )
)
でいいですよ。それで集計レイアウトをつくればいいです。

Offline

#11 2017-12-28 20:57:25

Hiro
Member

Re: レコード数の抽出

ハタ坊 wrote:

早速自分なりに調べてみたのですがよく理解できませんでした。

変数を設定[$#dumy;値:// 繰り返[6回]変数$cntに初期値0を設定 $cnt[1~6]=0

Let(
[
$i=0;
$f=
  "Case($i=6; \"\";
    Let([
     $i=$i+1;
     $cnt[$i]=0
    ]; Evaluate($f))
  )"
];
Evaluate($f)
)

このスクリプトは何を返すのですか。

この式は所謂 ループ再帰式で、働きは、
変数$cnt[1~6] と初期値=0 を6回ループでLet(変数設定)するもので、
明示的な何かを返す訳ではありません。
集計結果を一時保管する仮置き場として変数$cnt[1~6] を確保するのが目的です。

この変数ワク確保は、皆さんの区分フィールドに相当する簡便措置です。

ループ式が難しければ、同じことを下記の一般式で書いても同じです。

/******************
繰り返[6回]変数$cntに初期値0を設定
******************/
Let(
[
   $cnt[1]=0;
   $cnt[2]=0;
   $cnt[3]=0;
   $cnt[4]=0;
   $cnt[5]=0;
   $cnt[6]=0
];
   ""
)

この式も含め修正版アップデートサンプルを上書きアップしてありますので、
再度DLし直してご覧ください。

●修正済サンプル「集計件数の円グラフ化.fmp12」→ https://yahoo.jp/box/3ku17L

Last edited by Hiro (2017-12-28 23:52:07)

Offline

#12 2018-01-04 09:43:52

ハタ坊
Member

Re: レコード数の抽出

返信が遅くなりまして申し訳ございません。
Hiro様再度サンプルを作成していただきまして誠にありがとうございます。
早速ダウンロードして解析させていただきます。
ループの考え方をしっかりと勉強した上で、このスクリプトを作成中のDBに組み込んでいこうと思います。
親切丁寧に教えていただきまして誠にありがとうございました。
また分からないことなどありましたら宜しくお願い致します。

Offline

#13 2018-01-04 11:19:53

Shin
Member

Re: レコード数の抽出

繰り返しフィールドを2個作るだけの作法。全レコードを表示させれば、集計できます。レコードを抽出すれば、部分集計が可能です。スクリプトは不要です。
https://www.dropbox.com/s/nf0c08cft51di … 7.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.005 seconds, 8 queries executed - Memory usage: 546.36 KiB (Peak: 567.27 KiB) ]