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

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

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

You are not logged in.

Announcement

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


#1 2016-09-06 11:43:49

かっぱ
Guest

計算式

教えてください。
FM13
ウインドウズ10
利用です。

[納品日] [サービス開始日] [請求開始日] [分割] [請求終了日] の4つのフィールドがあります。

[納品日]・・・・・・・・納品した年月日を入力しています。
[サービス開始日]・・・・納品日に入力した日付の翌月1日が自動で入力になります。
[請求開始日]・・・・・・サービス開始日の末日になります。
[分割回数]・・・・・・・分割の回数
[請求終了日]・・・・・・請求開始日の当月もしくは、分割回数分延びるようになっています。

現在下記の式で

Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) )

請求終了日を分割回数分延長するようにしているので、納品日が2月になるとどうしても1月ずれてしまうのですが
何か良い方法はありませんでしょうか。

#2 2016-09-06 13:18:47

チポ
Member

Re: 計算式

請求終了日の「日」は請求開始日の「日」なのですか?

もしそうでしたら、
例えば、
2月30日
とか、
4月31日
になった場合のルールーが必要です。

Offline

#3 2016-09-06 15:16:12

かっぱ
Guest

Re: 計算式

チポ様ありがとうございます。
仰せの通り、請求終了日の日は請求開始日の日になっています。
特に意味はないのですが、今のところそのようにしております。
すみません。その場合のルールとはどのようにすれば良いでしょうか。
宜しくお願いします。


チポ wrote:

請求終了日の「日」は請求開始日の「日」なのですか?

もしそうでしたら、
例えば、
2月30日
とか、
4月31日
になった場合のルールーが必要です。

#4 2016-09-06 16:09:17

チポ
Member

Re: 計算式

2月30日
とか、
4月31日
こうなった場合、

2/28 (閏年は2/29)か 3/1
4/30 か 5/1
どちらかだと思いますが、
どちらにするのかをルールとして決めてください。

ということです。

Offline

#5 2016-09-06 17:14:50

hajime
Member

Re: 計算式

ある月の末日を求める時は、翌月の1日から1日引くことで正しい末日を求めるのが早いかと思います。
質問に書かれていた式を修正すると、こんな感じでしょうか?
Date ( Month ( 請求開始日 )+(分割回数) ; 1 ; Year ( 請求開始日 ) ) -1

Offline

#6 2016-09-07 17:42:37

かっぱ
Guest

Re: 計算式

チポさん/hajimeさん、アドバイスありがとうございます。

チポさん、すみません。
ルールの設定方法がわからないのですが、どのような計算式になるのか、教えてもらえませんでしょうか。
お願い致します。



チポ wrote:

2月30日
とか、
4月31日
こうなった場合、

2/28 (閏年は2/29)か 3/1
4/30 か 5/1
どちらかだと思いますが、
どちらにするのかをルールとして決めてください。

ということです。

#7 2016-09-08 08:41:50

チポ
Member

Re: 計算式

いやーー
ルールを決めるのは、かっぱさんサイドで決めないと。


請求終了日が計算で
  4月31日(実際には無い日付です)
となった場合、
その日付を
4月30日(月末)

  5月1日
にするのかのルールーを決めれば計算式はできますよね。

Offline

#8 2016-09-08 12:43:19

かっぱ
Guest

Re: 計算式

チポさん
ありがとうございます。
4月31日になった場合は、その月末4月30日にしたいのですが、計算式と設定方法がわからないのですが、
ご教授いただけるでしょうか。


チポ wrote:

いやーー
ルールを決めるのは、かっぱさんサイドで決めないと。


請求終了日が計算で
  4月31日(実際には無い日付です)
となった場合、
その日付を
4月30日(月末)

  5月1日
にするのかのルールーを決めれば計算式はできますよね。

#9 2016-09-08 13:59:48

チポ
Member

Re: 計算式

そういうルールなら、
  Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) )
これを元にして、

求めた日付の「日」が、請求開始日の「日」より小さければ、
それは月をまたいだことになりますから、前月月末に戻す。
という式です。

  Let ( [ $dt = Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) ) ;
           $dy = Day ( $dt ) ] ;
           $dt - $dy * ($dy < Day ( 請求開始日 ) ) )

内容を解析してください。

Offline

#10 2016-09-08 15:42:22

かっぱ
Guest

Re: 計算式

チポさん
ありがとうございます。教えて頂いた式で問題なく動作したのですが、
教えていただきました式と元々設定していました式の2つを組み合わせることができなく悩んでました。

元々入っていた式です。
------
Let (
d = Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) ) ;
Case (not IsEmpty ( 解約日 ) ; Date ( Month ( 解約日 ) +1 ; Day ( 解約日 ) ; Year ( 解約日 ));
Case ( not IsEmpty ( 品名 ) and not IsEmpty ( 開始日) ;
Case (
  サービス商品名 = "初期費用 千大01" ; d ;
  サービス商品名 = "初期費用 千大02" ; d ;
  サービス商品名 = "初期費用 千大03" ; d ;
  サービス商品名 = "初期費用 千大04" ; d ;
  サービス商品名 = "初期費用 千大05" ; d ;
  ""
)
)) )




-----------------
この式とご教授頂いた式を組み合わせて入れたいのですが、どうしてもできません。
再度ご教授いただけますでしょうか。
宜しくお願いします。

チポ wrote:

そういうルールなら、
  Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) )
これを元にして、

求めた日付の「日」が、請求開始日の「日」より小さければ、
それは月をまたいだことになりますから、前月月末に戻す。
という式です。

  Let ( [ $dt = Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) ) ;
           $dy = Day ( $dt ) ] ;
           $dt - $dy * ($dy < Day ( 請求開始日 ) ) )

内容を解析してください。

#11 2016-09-08 16:16:02

チポ
Member

Re: 計算式

かっぱさんの式の
  d
が私の式になるようにすればいいのでは。

Offline

#12 2016-09-08 17:46:33

かっぱ
Guest

Re: 計算式

チポさん
重ね重ねすみません。
チポさんの式に置き換えているのですが、引数がたりません。などが出て、うまく置き換えることができません。
置き換える式を教えていただけないでしょうか。
すみませんが宜しくお願いします。



チポ wrote:

かっぱさんの式の
  d
が私の式になるようにすればいいのでは。

#13 2016-09-09 08:30:28

チポ
Member

Re: 計算式

Let ( [ dt = Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) ) ;
           dy = Day ( dt ) ;
           d = dt - dy * ( dy < Day ( 請求開始日 ) ) ] ;
         Case・・・・・

これでいいのでは。

Last edited by チポ (2016-09-09 08:46:29)

Offline

#14 2016-09-09 10:24:55

かっぱ
Guest

Re: 計算式

チポさん
できました
何から何までありがとうございました。

チポ wrote:

Let ( [ dt = Date ( Month ( 請求開始日 )+(分割回数)-1 ; Day ( 請求開始日 ) ; Year ( 請求開始日 ) ) ;
           dy = Day ( dt ) ;
           d = dt - dy * ( dy < Day ( 請求開始日 ) ) ] ;
         Case・・・・・

これでいいのでは。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.038 seconds, 8 queries executed - Memory usage: 545.67 KiB (Peak: 566.21 KiB) ]