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

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

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

You are not logged in.

Announcement

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


#1 2018-03-01 10:07:09

coochan
Member

以前作った計算式の内容がわからなくなってしまいました。

Count (
   If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ 新規::エントリー日 ; 新規::エントリー日
   ;0)
上記の式です。

エントリー日の総数をカウントしたいのですが、
当月分はカウントできるのですけど、
前月分がなぜかカウントできません。

例)
2月中に2月分をカウントすると総数がカウントされるのですが、
3月中に2月分をカウントすると総数がカウントされません。

式の内容を把握した上で、
前月分でもカウント出来るような式が作れれば幸いです。

分かりにくい質問かと思いますが、よろしくお願い致します。


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#2 2018-03-01 11:03:37

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

全体が分からないのですが、Get ( 日付 ) を先月の日付にすれば、前月以降をカウントできるはずです。
ですが、この式では効率悪いでしょうね。エントリー日付を年月に変換して集計した方が、効率いいと思います。

Offline

#3 2018-03-01 12:07:11

チポ
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

挙げられた式、
全く理解できません。

思うような値を返していますか?

Offline

#4 2018-03-02 07:25:48

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

失礼しました。

リスト形式で
パートの定義 → 小計ソート対象:受注者
にして
受注者ベースで
エントリー件数、受注ポイント、取消ポイントなどを一覧で見れるようにしてます。

で、
エントリー日に当月(3月)なら
2018/03と入れて
スクリプトを組んだボタンを押すと
当月の成績が出るようにしてます。

エントリー件数=エントリー日が入力されてる件数なので
Count (
   If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ 新規::エントリー日 ; 新規::エントリー日
   ;0)

として
その集計を表示させてます。

その際 2018年3月中に
2018/03 で検索した当月分はエントリー件数きちんとカウントされるのですが、
2018/02 で検索するとエントリー件数がカウントされません。
ほかのポイントなどはカウントされます。

これを
前月、前々月分の成績をきちんと表示させたいのですが、
おそらく上記の式が間違ってると思われます。

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


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#5 2018-03-02 08:44:58

Moz
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

集計の手順(スクリプトの中身)やそもそも計算式がどこに設定されているかなど分からないのですが......

単純に計算式だけ見れば Get ( 日付 ) では常に当月1日になりますから過去に戻ったら動かなくなりますね。
既にShinさんに指摘されていますよ。

Offline

#6 2018-03-02 08:51:10

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

集計使っているのでしたら、集計する前に対象を抽出して、エントリー日をカウントするだけでいいです。前月ならば、前月を抽出すればいいでしょう。

Offline

#7 2018-03-02 09:28:55

チポ
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

> Count (
>    If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ 新規::エントリー日 ; 新規::エントリー日
>    ;0)

まず
> Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1"
これは、
    Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/"  & 1
のタイポだと思いますが、
これはテキストで
  2018/03/1
の様な値を返しますよね。

これを、おそらく日付フィールドの
  新規::エントリー日
と比較すること自体無意味でしょう。

さらに全体をCount関数でかこっているようですが、
それが全く理解できません。

これで求める値が得られているということも理解できません。

Offline

#8 2018-03-02 09:40:35

チポ
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

んん!そうじゃないのか。

> エントリー日に当月(3月)なら
> 2018/03と入れて

と書いていましたね、
これはテキストですね。

ならば,IFの条件は
  2018/03/ & 1 >= 2018/03
のようになりますから、前月以下は偽となりますか。。

で,それが真なら
  2018/03
を返し、それをCountする?

やっぱり分かりません。。

Offline

#9 2018-03-02 10:43:47

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

構造を変更してみていかがでしょう。

まず、年月の計算フィールドを作りましょう。例えば、Year ( エントリー日 ) + Month ( エントリー日 ) / 100
エントリー数の集計フィールドを、エントリー日のカウントへ変更します。
集計レイアウトに、小計パートを追加して、キーは、上の年月にします。
ソートを、受注者、年月 にすれば集計できるはずです。

クロス集計したければ、過去のスレッドを検索して参照して下さい。

Offline

#10 2018-03-03 08:41:02

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

エントリー年月の計算フィールドを作りました。
Year ( エントリー日 ) + Month ( エントリー日 ) / 100

集計レイアウトは現在
すでに小計パート、受注者でソートしてるのですが、
もうひとつ小計パート エントリー年月でソートするってことでしょうか?
なんかうまくいきません。

クロス集計、これ導入すればもっと見やすくなりそうですが難しそうなので一旦保留で。


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#11 2018-03-03 10:50:30

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

小計パートを追加し、そこソートキーを年月にして、そこに集計フィールドを配置します。受注者、年月の順でソートします。

クロス集計も追加したサンプル
https://www.dropbox.com/s/izr0i5viczj65 … 7.zip?dl=0

Offline

#12 2018-03-04 01:29:20

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

パートを2つにすると
受注者と過去の月ごとの成績が出てしまうので、少し見にくいですね。

理想は
2018/3 と検索したら
受注者順で エントリー数などが表示されるのが見やすいです。
ですので、小計パートは 受注者ソートのみにするのがいいかと思います。

1.エントリー数 以外に
2.ポイント(受注ポイント-取消ポイント)
3.受注ポイント
4.取消ポイント
5.取消数
6.当月取消数
を集計してます。
(あと付けみたいになって申し訳ございません)


今現在
エントリー日=2018/3 と入力して
スクリプト
変数を設定[$$YM;値::新規エントリー日]
フィールド設定[新規::エントリー日;$$YM]
新規レコード/検索条件
フィールド設定[新規::取消日;$$YM]
レコード/検索条件確定[入力値の制限を無視;ダイアログなし]
変数を設定[$$qwertyuiop;値:1]
検索実行[]
レコードのソート[記憶する;ダイアログなし]
レコード/検索条件/ページへ移動[最初の]
現在のスクリプト終了[結果:0]

としてます。
そうすることで
3月の成績が出るわけです(一応この式でいけてるはず。。)

ただ、
エントリー日に 2018/2 として 先月の成績をみたいと思うと
エントリー数 と 当月取消数がうまくカウント出来ないのです。
(取消数は違うところからカウントしているのでなぜかいけてます)

Shinさまがおっしゃる通り
エントリー月日
取消月日
フィールドを作成して
カウントすればいけると思うのですが、

うまくいきません。

最初の質問に補足するようになってしまいましたが、
ご教授お願い致します。


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#13 2018-03-04 10:42:14

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

全体のフィールド構成を書いてください。違う仕組みが別に動いているようですので、それも詳細に書いてください。

> ですので、小計パートは 受注者ソートのみにするのがいいかと思います。
いいと思われる方向で作られればいいですが。
集計機能は、対象となっているレコードに対しての機能ですので、必要な小計パートのみでソートすればいいです。小計パートはいくつあっても邪魔にはなりません。

> 2018/3 と検索したら受注者順で エントリー数などが表示されるのが見やすいです。
でしたら、抽出して受注者でソートすればいいです。そのスクリプトも
変数を設定[$$YM;値::新規エントリー日]
検索実行[条件を記憶する]
レコードのソート[記憶する;ダイアログなし]
でけで十分でしょう。

Last edited by Shin (2018-03-04 14:32:37)

Offline

#14 2018-03-04 16:59:23

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

小計パートはいくつあっても邪魔にならないんですね!!
知らんかったのにいらんこと言ってすいませんでした。

フィールドの構成ですが、
パートの定義 → 小計 ソート対象受注者の行に
1.P集計集計(受注P集計-取消P集計)
2.受注P集計(受注P計算_の集計)
≪受注P計算_計算≫
Let (
[
YM = Substitute ( $$YM ;[ "/" ; ¶ ];[ "/" ; ¶ ] ) ;
YM0 = GetValue ( YM ; 1 ) * 12 + GetValue ( YM ; 2 ) ;
YM1 = Year ( 新規::エントリー日 ) * 12 + Month ( 新規::エントリー日 )
] ;
Case (
  YM1 = YM0 ;  受注P計算
)
)
3.取消P集計(取消P計算_の集計)
≪受注P計算_計算≫
Let (
[
YM = Substitute ( $$YM ;[ "/" ; ¶ ];[ "/" ; ¶ ] ) ;
YM0 = GetValue ( YM ; 1 ) * 12 + GetValue ( YM ; 2 ) ;
YM1 = Year ( 新規::取消日 ) * 12 + Month ( 新規::取消日 )
] ;
Case (
  YM1 = YM0 ;  取消P計算
)
)

4.エントリー集計
5.取消集計
6.当月取消集計(当月取消計算の集計)
≪当月取消計算≫
Count (
   If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ 新規::エントリー日 ; 新規::取消日
   ;0)   // If
)   // Count

7.取消率(GetSummary ( 注取集 ; 受注者) / GetSummary ( エントリ集 ; 受注者))

です。

こんなのでわかりますでしょうか?


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#15 2018-03-05 01:27:11

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

テーブルと、その中のフィールド構成を書いてください

ざっと見たところ、レコードが少ない間はいいのですが、レコードが何万にもなってくると、集計に非常に時間がかかってくる構造です。
また、ポイントが取消になったときに、ポイントの集計はどの月に対して行いますか。月またぎになるとポイント取得数と矛盾した集計になりませんか。

Last edited by Shin (2018-03-05 10:37:39)

Offline

#16 2018-03-05 16:43:49

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

集計時間かかります。
これもどうにかしたいと思ってました。

ポイント取消になったときですが、
3月受注、3月取消でも
2月以前の受注、3月取消でも
3月に対して行いたいです。

すいませんが、フィールドの構成というのは
どういう風に書けば分かりやすいですか?
どのように書けばいいかわからなくて。。。


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#17 2018-03-05 17:09:21

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

こんな表示がいいのですか
https://www.dropbox.com/s/izr0i5viczj65 … 7.zip?dl=0

> ポイント取消になったときですが、
> 3月受注、3月取消でも
> 2月以前の受注、3月取消でも
> 3月に対して行いたいです。
これは、3月受注分も合わせて集計ですよね。
取消分は、受注日ではなく取消日で集計する、という事ですか。(受注月には出てこない)
どちらにも出しておくのでしたら、おそらくフィールドの構成を大きく変える必要があります。

フィールドの構成は、フィールドの一覧画面のように、テーブル毎にフィールド名とフィールドタイプ、計算フィールドならばその計算式を書き出してください。
また、リレーションがあれば、そのリレーション条件も合わせて書き出してください。

Offline

#18 2018-03-06 09:53:30

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

>これは、3月受注分も合わせて集計ですよね。
→ そうです。
>取消分は、受注日ではなく取消日で集計する、という事ですか。
→ そうです。

受注日=アポインターが受注した日
取消日=キャンセルになった日
エントリー日=webの登録サイトに登録した日(エントリー日がポイントの対象の日になります)

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
・リレーション
テーブルA::電話番号=テーブルB1::電話番号=テーブルB2::電話番号
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
・テーブルBフィールドの構成
≪フィールド名≫   ≪タイプ≫

<電話番号>    <テキスト>
<受注フラグ>   <テキスト>
<受注者>     <計算> → テーブルA::受注者   
<エントリ計>   <計算> → Count (
   If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ テーブルA::エントリー日 ; テーブルA::エントリー日
   ;0)
<エントリ集>   <集計> → エントリ計合計
<開通計>     <計算> → 受注フラグ = "開通OK"
<開通集>     <集計> → 開通計合計
<開通率>     <計算> → GetSummary ( 開通集 ; 受注者) / GetSummary ( エントリ集 ; 受注者)
<全開通率>    <計算> → 開通集 / エントリ集
<注取計>     <計算> → 受注フラグ = "注取NG"
<注取集>     <集計> → 注取計合計
<注取率>     <計算> →  → GetSummary ( 注取集 ; 受注者) / GetSummary ( エントリ集 ; 受注者)
<全注取率>    <計算> → 注取集 / エントリ集
<当月注取計>   <計算> → Count (
   If(Year ( Get ( 日付 ) ) & "/" & Right ( "0" & Month ( Get ( 日付 ) ) ; 2 ) & "/ & 1" ≤ テーブルA::エントリー日 ; テーブルA::取消日
   ;0)
<当月注取集>   <集計> → 当月注取計合計
<受注P計>    <計算> → 長いので省きます
<受注P計_>    <計算> → Let (
[
YM = Substitute ( $$YM ;[ "/" ; ¶ ];[ "/" ; ¶ ] ) ;
YM0 = GetValue ( YM ; 1 ) * 12 + GetValue ( YM ; 2 ) ;
YM1 = Year ( テーブルA::エントリー日 ) * 12 + Month ( テーブルA::エントリー日 )
] ;
Case (
  YM1 = YM0 ;  受注P計
)
)
<受注P集_>    <集計> → 受注P計_合計
<注取P計>    <計算> → 長いので省きます
<注取P計_>    <計算> → Let (
[
YM = Substitute ( $$YM ;[ "/" ; ¶ ];[ "/" ; ¶ ] ) ;
YM0 = GetValue ( YM ; 1 ) * 12 + GetValue ( YM ; 2 ) ;
YM1 = Year ( テーブルA::取消日 ) * 12 + Month ( テーブルA::取消日 )
] ;
Case (
  YM1 = YM0 ;  注取P計
)
)
<注取P集_>    <集計> → 注取P計_合計
<P計_>      <計算> → 受注P計_ + 注取P計_
<P集_>      <集計> → P計_合計
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
・レイアウト
ヘッダ

<エントリー日> <※スクリプト>
小計ソート対象 受注者
<受注者><P集_><受注P集_><注取P集_><エントリ集><開通集><注取集><当月注取集><注取率>
フッタ
<P集_><受注P集_><注取P集_><エントリ集><開通集><注取集><当月注取集><全注取率>

<※スクリプト>=
変数を設定[$$YM;値::新規エントリー日]
フィールド設定[新規::エントリー日;$$YM]
新規レコード/検索条件
フィールド設定[新規::取消日;$$YM]
レコード/検索条件確定[入力値の制限を無視;ダイアログなし]
変数を設定[$$qwertyuiop;値:1]
検索実行[]
レコードのソート[記憶する;ダイアログなし]
レコード/検索条件/ページへ移動[最初の]
現在のスクリプト終了[結果:0]
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
これで分かりますでしょうか?


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#19 2018-03-06 13:36:04

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

サンプル更新しています。
https://www.dropbox.com/s/izr0i5viczj65 … 7.zip?dl=0

Offline

#20 2018-03-08 07:47:07

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

Shin様
サンプルありがとうございます。

サンプル内の2018/4のところですが
ポイント取得 3/19 のやつが 4月の成績に反映されてしまってます。
ポイント取得が4月分のものは4月に反映してもらう事は可能でしょうか?

3月にエントリー 4月取消の場合は
取得ポイントは3月分に反映
取消ポイントは4月分にマイナスとして反映

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


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#21 2018-03-08 10:27:49

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

その事について#17で書いていますが。今の構造では、集計する方法を大きく変えないと無理です。
ポイントの動きをそれぞれのレコードに分けるか、リレーションでの集計にすればいかがですか。
サンプル更新しています。

Last edited by Shin (2018-03-09 16:05:00)

Offline

#22 2018-03-08 23:51:53

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

今現在
当月の集計は♯18でいけてますが、

ポイントの動きをそれぞれのレコードにわけるか、リレーションでの集計にする
というのをサンプルで頂けると非常に助かります。

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


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#23 2018-03-14 00:53:40

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

Shinさま
連絡遅くなりました。
サンプル更新して頂いてたの気づかなくてすいません。

このサンプルですが
3/19の受注で4/1に取消あった分のレコードですが
これが3月の成績にカウントされてないような気がします。

これをカウントするように作れませんでしょうか?


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

Offline

#24 2018-03-14 10:21:05

Shin
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

入っていませんか?もう一度確認してください。

Offline

#25 2018-05-20 17:44:12

coochan
Member

Re: 以前作った計算式の内容がわからなくなってしまいました。

Shin様
お返事が遅くなり大変申し訳ございません。

サンプルを自分のFMに当て込んだのですが。
このサンプルだと同じ日のエントリーだ2件以上できない仕様になってしまいます。
レコードは電話番号ごとにしたいです。

よろしくお願いします。


OS:[win10]
FileMaker Ver:[Pro11]
FileMaker Server 11も利用
現在 コールシステムでファイルメーカーを利用してます。

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, 9 queries executed - Memory usage: 649.13 KiB (Peak: 682.03 KiB) ]