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

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

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

You are not logged in.

Announcement

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


#1 2015-12-15 20:17:48

むーこ
Guest

同じフィールドへ2種類の式の入力方法

請求停止日というフィールドに下記の式でサービス商品名によって、1ヶ月後、2ヵ月後といった日付が入力されるようにしているのですが、
同じ、請求停止日のフィールドに、別の解約日に日付が入ったときに、翌月の日付を入力されるようにしたいのですが、すでに下記の式が入っているので、
設定方法がわかりません。
お分かりの方がいらっしゃいましたら、知恵をお貸しください。
宜しくお願いします。
-----------------------------------------------------------------------------------------------

If ( サービス商品名 = "サービスA"; Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
If ( サービス商品名 = "サービスB" ; Date ( Month ( 請求日 )+(分割回数)-1; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
If ( サービス商品名 = "サービスC" ;Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
If ( サービス商品名 = "サービスD ; Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
If ( サービス商品名 = "サービスE" ; Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ; ""
   )
)
))))

#2 2015-12-15 22:48:26

Shin
Member

Re: 同じフィールドへ2種類の式の入力方法

Let() 関数を覚えると、式の中で同じ物が出てきた時に、簡単に書ける様になりますよ。
また、 Case() 関数も覚えましょう。If() と似ていますが、そちらの方が応用が利きます。

上の式は、

Let (
 d = Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
 Case (
  サービス商品名 = "サービスA" ; d ;
  サービス商品名 = "サービスB" ; d ;
  サービス商品名 = "サービスC" ; d ;
  サービス商品名 = "サービスD" ; d ;
  サービス商品名 = "サービスE" ; d ;
  ""
 )
)

と書けます。
この最初の d に値を代入する所で、Case ( IsEmpty ( 解約日 ) ; Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ; 翌月の日付 ) としておくと、条件に当てはまるかと思います。
もし、サービスに関係なく解約日が入るのでしたら、Case () の最初の分岐の所に、not IsEmpty ( 解約日 ) ; 翌月の日付 ; を加えると良いでしょう。

Offline

#3 2015-12-16 12:52:23

むーこ
Guest

Re: 同じフィールドへ2種類の式の入力方法

Shinさんどうもありがとうございます。アドバイス感謝します。
計算式がまったくわからないど素人になり、どうも理解できないんですが、
具体的に教えてもらえますでしょうか。どうぞ、宜しくお願いします。



Shin wrote:

Let() 関数を覚えると、式の中で同じ物が出てきた時に、簡単に書ける様になりますよ。
また、 Case() 関数も覚えましょう。If() と似ていますが、そちらの方が応用が利きます。

上の式は、

Let (
 d = Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ;
 Case (
  サービス商品名 = "サービスA" ; d ;
  サービス商品名 = "サービスB" ; d ;
  サービス商品名 = "サービスC" ; d ;
  サービス商品名 = "サービスD" ; d ;
  サービス商品名 = "サービスE" ; d ;
  ""
 )
)

と書けます。
この最初の d に値を代入する所で、Case ( IsEmpty ( 解約日 ) ; Date ( Month ( 請求日 )+(分割回数)-1 ; Day ( 請求日 ) ; Year ( 請求日 ) ) ; 翌月の日付 ) としておくと、条件に当てはまるかと思います。
もし、サービスに関係なく解約日が入るのでしたら、Case () の最初の分岐の所に、not IsEmpty ( 解約日 ) ; 翌月の日付 ; を加えると良いでしょう。

#4 2015-12-16 14:01:10

Shin
Member

Re: 同じフィールドへ2種類の式の入力方法

運用を理解し切れていません。
サービスがいくつかあり、それを月分割で請求する、という事ですね。各月の請求日は、最初の請求日から1ヵ月毎になる様ですが、月末の扱いを教えてください。
解約の日付が入ったとき、というのは、その時点で解約になると思うのですが、その翌月の日付が入るのでしょうか。

式については、ヘルプ等を参照され、ご理解頂ける範囲だと思います。

Offline

#5 2015-12-16 23:12:35

むーこ
Guest

Re: 同じフィールドへ2種類の式の入力方法

Shinさんコメントありがとうございます。
説明不足で、すみません。
請求停止のフィールドに入る日付は、以降の月の合計に含まないために、単月請求のサービスAからCのサービス名とその請求日が入ると、当月のみの請求になるので、請求日と同じ月の日付を、初めに記載しました式で、自動入力しております。
その他に解約日というフィールドがあり、解約日に日付が入った場合、毎月請求をしているものがあり、解約日の翌月支払い停止になるので、こちらの分も請求停止日のフィールドに、1ヶ月ごの値を自動入力できる式を記載したかったので、悩んでおりました。
お教えいただけるでしょうか。

Shin wrote:

運用を理解し切れていません。
サービスがいくつかあり、それを月分割で請求する、という事ですね。各月の請求日は、最初の請求日から1ヵ月毎になる様ですが、月末の扱いを教えてください。
解約の日付が入ったとき、というのは、その時点で解約になると思うのですが、その翌月の日付が入るのでしょうか。

式については、ヘルプ等を参照され、ご理解頂ける範囲だと思います。

#6 2015-12-17 09:14:33

Shin
Member

Re: 同じフィールドへ2種類の式の入力方法

請求停止日は、その1回だけ請求しない?という事でしょうか。
以降の月の合計、とは、どういう事ですか。
当月のみの請求、ということは、請求停止になれば、以後の請求は発生しない,という事ですか?
サービスDやEは異なる計算になるのですか。
提示されている式では、毎月請求が前提だと思いますが、毎月請求していないものもあるのですか。

読解力が無くて済みません

また、次毎の全体の集計、という管理は不要なのでしょうか。繰り返しフィールドに展開していると、それは非常に面倒な処理になります。繰り返しフィールドは、計算中の一時的な使用のみにされる事をお薦めします。

Last edited by Shin (2015-12-17 09:25:36)

Offline

#7 2015-12-17 16:38:47

むーこ
Guest

Re: 同じフィールドへ2種類の式の入力方法

Shinさん
理解できずに申し訳ありませんでした、前回頂いた説明で希望どおりできました。有難うございました。




Shin wrote:

請求停止日は、その1回だけ請求しない?という事でしょうか。
以降の月の合計、とは、どういう事ですか。
当月のみの請求、ということは、請求停止になれば、以後の請求は発生しない,という事ですか?
サービスDやEは異なる計算になるのですか。
提示されている式では、毎月請求が前提だと思いますが、毎月請求していないものもあるのですか。

読解力が無くて済みません

また、次毎の全体の集計、という管理は不要なのでしょうか。繰り返しフィールドに展開していると、それは非常に面倒な処理になります。繰り返しフィールドは、計算中の一時的な使用のみにされる事をお薦めします。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.017 seconds, 10 queries executed - Memory usage: 537.31 KiB (Peak: 541.85 KiB) ]