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

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

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

You are not logged in.

Announcement

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


#1 2016-08-03 17:20:45

CHACO
Member

case関数内の条件式で日付の範囲を設定する方法

いつもお世話になっております。

通販サイトの注文情報を管理するデータベースなのですが、
その注文が会社の何期目に頂いた注文なのかを識別するフィールドを作成したいです。

9月が決算月なので、以下のような計算式を試しましたが、
上手くいきませんでした。


Case (

受注日 = 2015/10...2016/9 ; "1期" ;
受注日 = 2015/10...2016/9 ; "2期" ;

"エラー" )

※受注日は日付フィールドとなります


どなたか分かる方いらっしゃいますでしょうか?
何卒宜しくお願い致します。

Offline

#2 2016-08-03 17:36:57

ふくろう
Guest

Re: case関数内の条件式で日付の範囲を設定する方法

1期の日付範囲
2期の日付範囲
3期はあるの?

もっと正確に書いたほうがいいよ

#3 2016-08-03 17:53:35

CHACO
Member

Re: case関数内の条件式で日付の範囲を設定する方法

ふくろう様

コメントありがとうございます。また、質問内容が足らず申し訳ございませんでした。

正確に書きますと、受注日という日付フィールドが、
2015年10月1日から2016年9月31日までの場合は「1期」とテキストを出力、
2016年10月1日から2017年9月31日までの場合は「2期」とテキストを出力、

この調子で3期、4期、5期… と出力され続けるようにしたいです。

簡単であれば期間無制限に出力され続けるようになれば良いなと思いますが、
以下のようなイメージで、設定した期間のみ出力されるようになれば十分です。

Case (

受注日 = 2015/10...2016/9 ; "1期" ;
受注日 = 2016/10...2017/9 ; "2期" ;
受注日 = 2017/10...2018/9 ; "3期" ;
受注日 = 2018/10...2019/9 ; "4期" ;
受注日 = 2019/10...2020/9 ; "5期" ;
受注日 = 2020/10...2021/9 ; "6期" ;
受注日 = 2021/10...2022/9 ; "7期" ;
受注日 = 2022/10...2023/9 ; "8期" ;
受注日 = 2023/10...2024/9 ; "9期" ;
受注日 = 2024/10...2025/9 ; "10期" ;
受注日 = 2025/10...2026/9 ; "11期" ;
受注日 = 2026/10...2027/9 ; "12期" ;
受注日 = 2027/10...2028/9 ; "13期" ;
受注日 = 2028/10...2029/9 ; "14期" ;
受注日 = 2029/10...2030/9 ; "15期" ;

"エラー" )


以上、何卒宜しくお願い致します。

Offline

#4 2016-08-03 17:57:32

Shin
Member

Re: case関数内の条件式で日付の範囲を設定する方法

( Year ( 受注日 + 92 ) - 2015 ) & "期"
で良いでしょうね。

Last edited by Shin (2016-08-03 18:02:08)

Offline

#5 2016-08-03 18:51:47

CHACO
Member

Re: case関数内の条件式で日付の範囲を設定する方法

Shin様

これ以上無い素晴らしい回答です( ;∀;)!!!!!!!!!!
全てが上手くいきました!!!
本当にありがとうございます!!!!!

Offline

#6 2016-08-03 23:01:39

Shin
Member

Re: case関数内の条件式で日付の範囲を設定する方法

意味を理解して使ってね

Offline

#7 2016-08-04 09:10:17

チポ
Member

Re: case関数内の条件式で日付の範囲を設定する方法

解決ですが、間違いの指摘を、、

> 受注日 = 2015/10...2016/9 ; "1期" ;
「...」
これは検索演算子で、計算式には使えません。

上記の条件式をあえて書けば
  受注日 >= 2015/10 and 受注日 <= 2016/9
となりますが、
これでは日付の比較ができません。


  受注日 >= "2015/10/1" and 受注日 <= "2016/9/30"

  受注日 >= Date ( 10 ; 1 ; 2015 ) and 受注日 <= Date ( 9 ; 30 ; 2016 )
とすればいいですね。

Offline

#8 2016-08-04 10:16:45

Shin
Member

Re: case関数内の条件式で日付の範囲を設定する方法

ついでに、Case() 関数の使い方について、
条件に合えば、それ以降の行は無視される動きになります。ですから、
Case (
受注日 ≤ "2015/9/30" ; "エラー" ;
受注日 ≤ "2016/9/30" ; "1期" ;
受注日 ≤ "2017/9/30" ; "2期" ;

)
と書いて行くと簡潔になります。

Offline

#9 2016-08-04 10:54:29

旅人
Member

Re: case関数内の条件式で日付の範囲を設定する方法

>意味を理解して使ってね
ヒント
31+30+31=92

Offline

#10 2016-08-04 10:56:50

CHACO
Member

Re: case関数内の条件式で日付の範囲を設定する方法

Shin様

10月1日から12月31日までが92日だから、Year関数で受注日から92日後の年を出し、それを2015で引くという感じですよね(。-∀-)!
大変勉強になりました!!今後も日付周りを触る時は応用して頑張ります!!!
Case() 関数の使い方もありがとうございます!!今後はこのように使おうと思います(*‘∀‘)!


チポ様

>「...」これは検索演算子で、計算式には使えません。

そうなんですね!大変勉強になります!
正しい計算式もありがとうございます!
今後使用する場面が来たら使ってみます!

Offline

#11 2016-08-04 15:56:41

Shin
Member

Re: case関数内の条件式で日付の範囲を設定する方法

旅人 wrote:

>意味を理解して使ってね
ヒント
31+30+31=92

その逆は、31+28or29+31+... となるので不定です。
稀でしょうが、1月2月決算の会社があるとするなら、決算末日の DayOfYear() を引いて求める事になります。

Offline

#12 2016-08-04 17:05:10

calcer
Guest

Re: case関数内の条件式で日付の範囲を設定する方法

2月決算なら3月からの日数だから9月のと同じでいいですよね。
1月なら-31でいいのでは。

#13 2016-08-04 21:26:40

Shin
Member

Re: case関数内の条件式で日付の範囲を設定する方法

勘違いしたようで。2月決算だと期首日は3月1日だから、+306 でいいですね。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 568.09 KiB (Peak: 584.63 KiB) ]