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

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

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

You are not logged in.

Announcement

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


#1 2017-01-09 02:28:54

coochan
Member

計算式を短くしたい

式が長ったらしいので、短くしたいのですが、わからなくなってしまいました。
ポイント計算のフィールドです。

------------------------------------------------------------
If ( 受注フラグ ≠ "注取NG" ;
If ((not IsEmpty ( 新規::エントリー日 )  and Left ( 新規::申込回線 ; 1 ) = "O" or Left ( 新規::申込回線 ; 1 ) = "S") or  not IsEmpty ( 新規::工事予定日 )  and Left ( 新規::申込回線 ; 1 ) = "U";
Round (

施策ポイント 201502 ①::ポイント + 施策ポイント 201502 ②::ポイント +
ポイント 201502::ISPポイント +
ポイント 201507::ISPポイント +
ポイント 201604::ISPポイント +
ポイント 201606::ISPポイント +
ポイント 201607::ISPポイント +
ポイント 201701::ISPポイント +

Case ( 新規::マルチパック = "有" ; .2
)  -

( GetAsNumber ( 新規申込施策::申込施策 ① ) + GetAsNumber ( 新規申込施策::申込施策 ② ) ) / 10000
; 2
); 0
); 0 
)

+

If ( 新規::進捗 = "取得後取消" and 新規::申込ISP = "OCN 新規 東" ;
Case ( Date ( 1 ; 1 ; 2017 ) ≤ 新規::エントリー日 ; -.3 )
; 0 
)

+

If ( 新規::進捗 = "取得後取消" and 新規::申込ISP = "OCN 新規 西" ;
Case ( Date ( 1 ; 1 ; 2017 ) ≤ 新規::エントリー日 ; -.3 )
; 0 
)

+

If ( 新規::進捗 = "取得後取消" and 新規::申込ISP = "OCN 自不他" ;
Case ( Date ( 1 ; 1 ; 2017 ) ≤ 新規::エントリー日 ; -.2 )
; 0 
)

------------------------------------------------------------

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


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

Offline

#2 2017-01-09 04:44:36

Hiro
Member

Re: 計算式を短くしたい

余り短く成りそうもありませんが、


If(受注フラグ≠"注取NG";
   If((IsEmpty(新規::エントリー日)=0 and Filter("OS";Left(新規::申込回線;1))≠"") or (IsEmpty(新規::工事予定日)=0 and Left(新規::申込回線;1)="U");
      Round(
         施策ポイント 201502 ①::ポイント+
         施策ポイント 201502 ②::ポイント+
         ポイント 201502::ISPポイント+
         ポイント 201507::ISPポイント+
         ポイント 201604::ISPポイント+
         ポイント 201606::ISPポイント+
         ポイント 201607::ISPポイント+
         ポイント 201701::ISPポイント+
         Case(新規::マルチパック="有";2/10) -
         ((新規申込施策::申込施策 ①)*1+(新規申込施策::申込施策 ②)*1)/10^4
      ;2)   // Round
   ;0)   // If
;0)   // If

+

//----------------------------------------------------------
If(新規::進捗="取得後取消" and 新規::申込ISP="OCN 新規 東";
   Case(Date(1;1;2017)≤新規::エントリー日;-3/10)
;0)   // If

+

If(新規::進捗="取得後取消" and 新規::申込ISP="OCN 新規 西";
   Case(Date(1;1;2017)≤新規::エントリー日;-3/10)
;0)   // If
//----------------------------------------------------------


もし "OCN 新規 東" と "OCN 新規 西" は同時に有ることが無ければ、
後尾2つの If() 式は1つの式に併合出来ます。

If(新規::進捗="取得後取消" and Filter("OCN 新規 東西";新規::申込ISP)=新規::申込ISP;
   Case(Date(1;1;2017)≤新規::エントリー日;-3/10)
;0)   // If


【お詫び】 2017/1/9 12:19
上記式は最後の If() 式部が抜けてましたのでお詫びいたし、以下へ訂正いたします。


If(受注フラグ≠"注取NG";
   If((IsEmpty(新規::エントリー日)=0 and Filter("OS";Left(新規::申込回線;1))≠"") or (IsEmpty(新規::工事予定日)=0 and Left(新規::申込回線;1)="U");
      Round(
         施策ポイント 201502 ①::ポイント+
         施策ポイント 201502 ②::ポイント+
         ポイント 201502::ISPポイント+
         ポイント 201507::ISPポイント+
         ポイント 201604::ISPポイント+
         ポイント 201606::ISPポイント+
         ポイント 201607::ISPポイント+
         ポイント 201701::ISPポイント+
         Case(新規::マルチパック="有";2/10) -
         ((新規申込施策::申込施策 ①)*1+(新規申込施策::申込施策 ②)*1)/10^4
      ;2)   // Round
   ;0)   // If
;0)   // If

-   // 減点(マイナス)

If(新規::進捗="取得後取消" and Date(1;1;2017)≤新規::エントリー日;
   Case(
      新規::申込ISP="OCN 新規 東";3/10;
      新規::申込ISP="OCN 新規 西";3/10;
      新規::申込ISP="OCN 自不他";2/10
   ;0)   // Case
;0)   // If

Last edited by Hiro (2017-01-09 13:10:29)

Offline

#3 2017-01-09 07:55:38

ぽんかん
Guest

Re: 計算式を短くしたい

後半の3項をまとめる。

If ( 新規::進捗 = "取得後取消" and Date ( 1 ; 1 ; 2017 ) ≤ 新規::エントリー日 ;
Case (
  新規::申込ISP = "OCN 新規 東" ; -.3 ;
  新規::申込ISP = "OCN 新規 西" ; -.3 ;
  新規::申込ISP = "OCN 自不他" ; -.2
)
)

#4 2017-01-09 11:22:15

シャチ
Member

Re: 計算式を短くしたい

ややこしい計算式は
内部計算の目的別に
計算フィールドに分解して
それおを最終的にまとめるようにすると
結構わかりやすくなるのはと思います。
フィールドが増えるというリスクはありますが
計算のチェックもしやすくなるのではないかと思います

Offline

#5 2017-01-09 16:33:58

coochan
Member

Re: 計算式を短くしたい

ありがとうございます。
かなり短縮できたと思います。

質問
1.((新規申込施策::申込施策 ①)*1+(新規申込施策::申込施策 ②)*1)/10^4 ←「10^4」どういう意味ですか?
2. 新規::申込ISP="OCN 新規 東";3/10; ← 「/10」はどういう意味ですか?

よろしくお願いします。


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

Offline

#6 2017-01-09 22:47:25

Hiro
Member

Re: 計算式を短くしたい

> 1.((新規申込施策::申込施策 ①)*1+(新規申込施策::申込施策 ②)*1)/10^4 ←「10^4」どういう意味ですか
「10^4」は「10の4乗」の意味で、10000 の事です。

> 2. 新規::申込ISP="OCN 新規 東";3/10; ← 「/10」はどういう意味ですか?
「3/10」は「3割る10」の意味で、0.3 の事です。

Offline

#7 2017-01-09 23:33:47

coochan
Member

Re: 計算式を短くしたい

すいません。初歩的な質問で。

ありがとうございます!


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.005 seconds, 10 queries executed - Memory usage: 521.47 KiB (Peak: 526.06 KiB) ]