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

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

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

You are not logged in.

Announcement

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


#1 2017-08-29 10:42:19

gmen
Member

物件集計方法

お世話になります。
ファイルメーカーPro11 Win7を利用しています。

調査データの報告書作成日(1ヶ月)で絞り、都道府県の集計をとりたいと考えています。

物件データ(10万件)
・ID
・物件名
・住所
・都道府県(計算より算出)※1
・報告書作成日

このような票を作りたいと思ってます。
都道府県  件数
・北海道  10件
・青森県  25件
・秋田県   8件
  ・   ・
  ・   ・
  ・   ・
・沖縄県  1件
・合計  3200件

自己連結リレーションをしてCountをつかたり、
集計でつっくてみましたが、件数が出なかったりと
できませんでした。初心者ですのでご指導お願いいたします

=====================
※1
Let (D = 住所 ;Case (
Left ( D ; 3 )="北海道" ; "北海道";
Left ( D ; 3 )="青森県" ; "青森県";
Left ( D ; 3 )="岩手県" ; "岩手県";
Left ( D ; 3 )="宮城県" ; "宮城県";
Left ( D ; 3 )="秋田県" ; "秋田県";
Left ( D ; 3 )="山形県" ; "山形県";
Left ( D ; 3 )="福島県" ; "福島県";
Left ( D ; 3 )="茨城県" ; "茨城県";
Left ( D ; 3 )="栃木県" ; "栃木県";
Left ( D ; 3 )="群馬県" ; "群馬県";
Left ( D ; 3 )="埼玉県" ; "埼玉県";
Left ( D ; 3 )="千葉県" ; "千葉県";
Left ( D ; 3 )="東京都" ; "東京都";
Left ( D ; 4 )="神奈川県" ; "神奈川県";
Left ( D ; 3 )="新潟県" ; "新潟県";
Left ( D ; 3 )="富山県" ; "富山県";
Left ( D ; 3 )="石川県" ; "石川県";
Left ( D ; 3 )="福井県" ; "福井県";
Left ( D ; 3 )="山梨県" ; "山梨県";
Left ( D ; 3 )="長野県" ; "長野県";
Left ( D ; 3 )="岐阜県" ; "岐阜県";
Left ( D ; 3 )="静岡県" ; "静岡県";
Left ( D ; 3 )="愛知県" ; "愛知県";
Left ( D ; 3 )="三重県" ; "三重県";
Left ( D ; 3 )="滋賀県" ; "滋賀県";
Left ( D ; 3 )="京都府" ; "京都府";
Left ( D ; 3 )="大阪府" ; "大阪府";
Left ( D ; 3 )="兵庫県" ; "兵庫県";
Left ( D ; 3 )="奈良県" ; "奈良県";
Left ( D ; 4 )="和歌山県" ; "和歌山県";
Left ( D ; 3 )="鳥取県" ; "鳥取県";
Left ( D ; 3 )="島根県" ; "島根県";
Left ( D ; 3 )="岡山県" ; "岡山県";
Left ( D ; 3 )="広島県" ; "広島県";
Left ( D ; 3 )="山口県" ; "山口県";
Left ( D ; 3 )="徳島県" ; "徳島県";
Left ( D ; 3 )="香川県" ; "香川県";
Left ( D ; 3 )="愛媛県" ; "愛媛県";
Left ( D ; 3 )="高知県" ; "高知県";
Left ( D ; 3 )="福岡県" ; "福岡県";
Left ( D ; 3 )="佐賀県" ; "佐賀県";
Left ( D ; 3 )="長崎県" ; "長崎県";
Left ( D ; 3 )="熊本県" ; "熊本県";
Left ( D ; 3 )="大分県" ; "大分県";
Left ( D ; 3 )="宮崎県" ; "宮崎県";
Left ( D ; 4 )="鹿児島県" ; "鹿児島県";
Left ( D ; 3 )="沖縄県" ; "沖縄県" ;
""))

Offline

#2 2017-08-29 11:29:16

チポ
Member

Re: 物件集計方法

都道府県名をキーとした小計パートの集計レイアウトで集計出来ます。

並び順を北から南としたいのでしたらその並びの値一覧を作って、それでソート出来ますね。


住所から、県名を抜き出すのは、
郵便番号があればそれを使うのが簡単ですね。

あげられた計算式は、、
県名で4文字は
  神奈川県
  和歌山県
  鹿児島県
だけで、その最初の1文字は他と重複しませんから、
最初の一文字で判定出来ます。
それ以外は全て3文字だけですね。
もっと簡単な式にできます。

Offline

#3 2017-08-29 12:14:47

gmen
Member

Re: 物件集計方法

ありがとうございます。
小計パートの集計レイアウトとはレイアウト編集のパート定義→小計でよろしでしょうか
そこに、フィールド:都道府県を配置し、新しくフィールド:件数合計(集計:件数)配置
件数:Count ( 都道府県)を作成
でいいのでしょうか。件数合計にデータ総数が出てしまいます。

都道府県の式を簡単にするにはどのような式になりますか

よろしくお願いします

Offline

#4 2017-08-29 13:11:01

チポ
Member

Re: 物件集計方法

> 小計パートの集計レイアウトとはレイアウト編集のパート定義→小計でよろしでしょうか
その通りです。
小計パートのソート対象は都道府県フィールドとします。

> フィールド:都道府県を配置し、新しくフィールド:件数合計(集計:件数)配置
その通りです。

> 件数:Count ( 都道府県)を作成
これが分かりません。
計算フィールドですか?
としたら不要です。


計算式の一例です
  Case ( Left ( 住所 ; 1 ) = "神" ; "神奈川県" ;
            Left ( 住所 ; 1 ) = "和" ; "和歌山県" ;
            Left ( 住所 ; 1 ) = "鹿" ; "鹿児島県" ;
            Left ( 住所 ; 3 ) )

Offline

#5 2017-08-29 13:19:26

qb_dp
Member

Re: 物件集計方法

スクリプトで集計する方法もあります。

集計用ファイル
北海道
青森県
...
沖縄県
という感じで47レコード作成


集計用ファイル
スクリプト:
Loop
スクリプト実行 [「Count(期間,都道府県)」 , ファイル: 「集計対象ファイル」; 引数: "2017/8/1...2017/8/31" & ¶ & 集計::都道府県]
フィールド設定 [集計::Count; Get(スクリプトの結果)]
レコード/検索条件/ページへ移動 [次の; 最後まできたら終了]
End Loop



集計対象ファイル
スクリプト:Count(期間,都道府県)

変数を設定 [$arg; 値:Get(スクリプト引数)]
検索モードに切り替え []
フィールド設定 [物件データ::報告書作成日; GetValue ( $arg ; 1 )]
フィールド設定 [物件データ::住所; GetValue ( $arg ; 2 )]
エラー処理 [オン]
検索実行 []
エラー処理 [オフ]
現在のスクリプト終了 [結果: Get ( 対象レコード数 )]

Offline

#6 2017-08-29 13:38:05

gmen
Member

Re: 物件集計方法

ありがとうございます。
チポ様
新しくフィールド:件数合計(集計:件数)配置の件数を出すために計算フィールドの件数:Count ( 都道府県)を作成しました。
不要となると、フィールド:件数合計の件数はどのようにしたらよいのでしょうか。

都道府県の計算はとても簡略できますね。
ありがとうございす。

小計パートだとエクセル等にはきだしはできないのでしょうか


qb_dp様

集計用ファイルとは、新たにテーブルを作るということでしょうか。
件数はどこに出るのでしょうか
引数: "2017/8/1...2017/8/31"の部分は変更するときは、スクリプトを変更しなければいけないのでしょうか。

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

Offline

#7 2017-08-29 14:11:05

Hiro
Member

Re: 物件集計方法

都道府県名の取得式ですが、
「都・道・府・県」キーが含まれる都道府県名は「京都府」だけだから、
京都だけエスケープ処理を施してから一括計算する方法の提案です。

Let(
[ #prf=
   Substitute( 住所
      ; ["京都府";"きょうと府"]
      ; ["都";"都¶"]
      ; ["道";"道¶"]
      ; ["府";"府¶"]
      ; ["県";"県¶"]
      ; ["きょうと";"京都"]
      )
];
   GetValue(#prf; 1)
)

Offline

#8 2017-08-29 14:18:39

qb_dp
Member

Re: 物件集計方法

集計用ファイル を作成してそこにテーブルを作ります。
上記の例では、
フィールド:都道府県
フィールド:Count
を作成し、件数は、フィールド:Count に入ります。
同じファイルの別テーブルでヤルと、レイアウトの切り替えが頻繁になるので、別ファイルが個人的にはおすすめです。

>引数: "2017/8/1...2017/8/31"の部分は変更するときは、スクリプトを変更しなければいけないのでしょうか。
集計期間設定用のグローバルフィーロドを作成しそれを使うと良いでしょう。

この方法の場合、既存ファイルへは、スクリプトを1つ追加するだけで、設計部分をいじらなくて済みます。

Offline

#9 2017-08-29 14:26:59

チポ
Member

Re: 物件集計方法

> 新しくフィールド:件数合計(集計:件数)配置の件数を出すために計算フィールドの件数:Count ( 都道府県)を作成
集計結果の都道府県名の種類数
ということでしょうか?

とすると
> Count ( 都道府県)
これでは無理です。
ちょっと面倒。。。

Offline

#10 2017-08-31 22:52:28

gmen
Member

Re: 物件集計方法

ありがとうございます

qb_dp様
>集計期間設定用のグローバルフィーロドを作成しそれを使うと良いでしょう。
グローバルフィールドはどこに作成するのでしょうか
>この方法の場合、既存ファイルへは、スクリプトを1つ追加するだけで、設計部分をいじらなくて済みます。
ここの部分がよくわかりません


チポ様
>集計結果の都道府県名の種類数ということでしょうか?
種類ではありません。都道府県ごとの件数を出すために考えました。
Count ( 都道府県)ではなくどのように書けばよろしいのでしょうか。

エクセル等にはきだしはできないのでしょうか

Offline

#11 2017-09-01 04:53:31

Shin
Member

Re: 物件集計方法

Substitute( 住所
      ; ["東京都";"東京都¶"]
      ; ["道";"道¶"]
      ; ["府";"府¶"]
      ; ["県";"県¶"]
      )
が簡単では。

集計を使ったサンプル。タブ区切りでエクスポートもしています。年月でもソートしていますので、絞り込んでからスクリプト走らせれば、絞り込んだ範囲で集計できます。
https://www.dropbox.com/s/m9878h0g4q4tb … 7.zip?dl=0

Offline

#12 2017-09-01 09:32:36

チポ
Member

Re: 物件集計方法

> 都道府県ごとの件数を出す
フィールドタイプを
  集計フィールド・カウント
として小計パートに配置して各県別の件数の集計。
同じフィールドを総計パートに配置して、対象レコードの件数の総計。
が求められます。

集計フィールドのエクスポートもできます。

Offline

#13 2017-09-01 10:58:48

gmen
Member

Re: 物件集計方法

チポ様
ありがとうございました。
エクスポートもできました。求めるものできました。
この応用で調査会社ごとの件数をだすとかできますね
皆さんありがとうございました。

Offline

#14 2017-09-01 11:38:55

gmen
Member

Re: 物件集計方法

北海道・・・沖縄をすべて出すにはどのようにすればいいですか。
0件の場合も表示したい。決まった都道府県の順番で表示する方法を教えてください

Offline

#15 2017-09-01 12:37:18

Shin
Member

Re: 物件集計方法

gmen wrote:

北海道・・・沖縄をすべて出すにはどのようにすればいいですか。
0件の場合も表示したい。決まった都道府県の順番で表示する方法を教えてください

別テーブルで集計する方法が簡単でしょう。
集計機能を使うと、0を出すのが結構めんどうです。

Offline

#16 2017-09-01 13:15:36

チポ
Member

Re: 物件集計方法

私も同じですね、
集計レイアウトでは件数0のレコードが必要になりますから、
お勧め出来ません。


別テーブルで、
1報告書作成日ごとに全都道府県のレコードを作り、
リレーションで集計出来ます。

Offline

#17 2017-09-01 13:16:13

gmen
Member

Re: 物件集計方法

Shin様
チポ様
ありがとうございます

>別テーブルで集計する方法が簡単でしょう。
単純にフィールドをコピーして張り付ければよいのでしょうか。
>集計機能を使うと、0を出すのが結構めんどうです。
やるとするとどのような手法でしょうか。

>別テーブルで、
>1報告書作成日ごとに全都道府県のレコードを作り、
>リレーションで集計出来ます。
別テーブルに
都道府県フィールド Countフィールド(集計フィールド・カウント都道府県)を作り
47レコードをつくりました。
Count部分が1しか出ません


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

Last edited by gmen (2017-09-01 13:34:26)

Offline

#18 2017-09-01 14:34:37

チポ
Member

Re: 物件集計方法

別テーブルには報告書作成日フィールドも必要です。
リレーションを

    別テーブル       元のテーブル
     都道府県名 = 都道府県名
  and
  報告書作成日 = 報告書作成日

として、
別テーブルで計算フィールドを作り
  Count ( 元のテーブル::都道府県名 )
で件数が求められます。

ここでは元のテーブルの集計フィールドは不要ですね。

Offline

#19 2017-09-01 17:01:37

gmen
Member

Re: 物件集計方法

チポ様 ありがとうございます

>別テーブルで計算フィールドを作り
>元のテーブル::都道府県名 ( 元のテーブル::都道府県名 )
>で件数が求められます。
リレーションを 
別テーブル       元のテーブル
     都道府県名 = 都道府県名
  and
  報告書作成日 = 報告書作成日
別テーブルに
都道府県フィールド
CountフィールドにCount(元のテーブル::都道府県名)
計画書作成日
を作りました。47レコード
作成してソート::都道府県をしてもContフィールドに何も出てきません。(ブランク)
何が問題なのでしょか

報告書作成日をグローバルにしたのですが大丈夫でしょうか
報告書作成日に期間を持たす場合はどのようにすればいいですか。
2017/08/01~2017/08/15

よろしくお願いします。

Offline

#20 2017-09-01 17:26:49

チポ
Member

Re: 物件集計方法

リレーションは正確にできていますか?

試しに、
別テーブルで、元テーブルのポータルを置いてみて、
関連レコードが正確に表示されているか確認してみたらいかがでしょう。


> 報告書作成日をグローバルにしたのですが大丈夫でしょうか
別テーブルなら大丈夫です。
リレーションの関連側の照合フィールドにグローバルフィールドはダメです。


> 報告書作成日に期間を持たす場合はどのようにすればいいですか。
> 2017/08/01~2017/08/15

ああ、報告書作成日を取り違えていました。

別テーブルで報告書作成日に変えて、
期間開始日と期間終了日
二つのフィールドを作り、
報告書作成日の照合を
  期間開始日 <= 報告書作成日
  and
  期間終了日 >= 報告書作成日
に変更します。


期間が、月度の様に常に一定のものなら、
元のテーブルでそのフィールドを持たせることもできますね。

Offline

#21 2017-09-01 18:39:30

gmen
Member

Re: 物件集計方法

チポ様
ありがとうございます。
リレーションはあっているのですが、表示されません。
元データ::都道府県が【顧客ファイル::ID】リレーション【物件ファイル::顧客ID】でつながっていて、
住所を表示させています。そこから計算フィールドで都道府県を抜き出しフィールド名::都道府県に表示してあります。
これをリレーションすると、件数が出ないのですが、
元テーブルに新しくテキストフィールドを作成して都道府県を入力する。
これを別テーブルとリレーションすると件数が出ます。
計算フィールドだとためなのでしょうか。

元データの都道府県フィールドが非保存でした。
解除できません。別フィールドに値のみ貼りつけのようなことで回避できないでしょか

よろしくお願いします。

Last edited by gmen (2017-09-01 20:05:37)

Offline

#22 2017-09-02 02:30:05

Hiro
Member

Re: 物件集計方法

遅れ馳せの上、横から失礼ですが、新たな別案の提案です。
別途テーブル追加やフィールド追加など極力抑えたシンプル構成案の提案です。
設定説明代わりに作例サンプルをアップしました。

【特徴】簡素化のため、
・全47都道府県分の枠取りは、繰り返し[47項]グローバルフィールドで確保。
・全47都道府県別の月次集計結果は、繰り返し[47項]計算フィールドへLookup関数式で自動取得。
・集計起算月は、現在のアクティブ・レコード上の報告書作成日から算出した月期を適用。
   (集計起算月キーを手入力する手間を省くため)
・集計処理自体は、リレーション集計法で自動計算取得します。
・集計結果は、データ一覧表レイアウトのヘッダ部に自動更新の最新値を常時表示、閲覧できます。

●サンプル「月次リレーション集計.fp7」 → https://yahoo.jp/box/Cv8EKe

Offline

#23 2017-09-03 09:40:14

チポ
Member

Re: 物件集計方法

> 計算フィールドだとためなのでしょうか
計算フィールドがダメという訳ではありません。

リレーションの関連側の照合フィールドはには索引保存が条件です。

計算フィールドの引数にリレーションの関連フィールドを使っていると、
索引ができませんから関連側の照合フィールドには使えません。

元テーブルの住所をルックアップで入力すれば索引ができます。

Offline

#24 2017-09-04 11:57:45

gmen
Member

Re: 物件集計方法

チポ様 ありがとうございます。
>元テーブルの住所をルックアップで入力すれば索引ができます。
ルックアップの使い方がわかりません。
物件登録というところを参照しています。
開始するテーブルを元テーブル
関連テーブルからルックアップするを物件登録
値のコピー元フィールドを物件住所
としましたが空白のままです。

よろしくおねがいします。

Offline

#25 2017-09-04 13:41:31

チポ
Member

Re: 物件集計方法

まず最初に必ずバックアップを取って、ファイルを守ってください。

ルックアップは入力値の自動化ですから、既存のレコードにはルックアップができません。

再ルックアップという方法があります。
照合フィールドを選択して
  フィールド内容の再ルックアップ
をします。
これは元に戻せませんから、もしおかしくなったらそれは捨てて、
バックアップのコピーを使います。

または、
  LookUp関数
を使った計算フィールドは索引保存出来ます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 10 queries executed - Memory usage: 640.18 KiB (Peak: 673.09 KiB) ]