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

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

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

You are not logged in.

Announcement

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


#1 2016-11-30 11:57:26

beginner
Guest

複数条件下での年齢計算

OS:[Windows 7]
FileMaker Ver:[Filemaker Pro 10.0v3]

最近Filemakerでデータ管理をはじめたのですが、周りに詳しい方がいなくて四苦八苦しています。

条件AまたはB、またはCの時は日付①での年齢を、条件Dの時は日付②での年齢を計算するために
年齢計算式を元に見よう見まねで下記の式を作ったのですが上手くいきません。
条件がAまたはDの時の計算結果が正しくありません。
また日付①②両方入力している場合、条件がDの場合でも日付①を元に計算結果が算出されてしまうのにも困っております。
orの使い方など根本的に間違っているのかもしれませんがそれすら分からない状態です。
皆様の知恵をお貸しください、宜しくお願い致します。

Case (
IsEmpty ( 生年月日 ) ; "" ;
条件 = "A" or "B" or "C" ;
日付① < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付① ) )  ;
Year ( 日付① ) - Year ( 生年月日 ) - 1 ;
Year ( 日付① ) - Year ( 生年月日 ) ;
条件 = "D" ;
日付② < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付② ) )  ;
Year ( 日付② ) - Year ( 生年月日 ) - 1 ;
Year ( 日付② ) - Year ( 生年月日 ))

#2 2016-11-30 12:27:55

あると
Member

Re: 複数条件下での年齢計算

>条件 = "A" or "B" or "C" ;
条件 = "A" or 条件 = "B" or 条件 = "C" ;
と書かないといけませんね。

それと、式が考えているのとかなり違うかも。
改行位置かえると見やすくなるので。
Case (
IsEmpty ( 生年月日 ) ; "" ;
条件 = "A" or "B" or "C" ;日付① < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付① ) )  ;
Year ( 日付① ) - Year ( 生年月日 ) - 1 ;Year ( 日付① ) - Year ( 生年月日 ) ;
条件 = "D" ;日付② < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付② ) )  ;
Year ( 日付② ) - Year ( 生年月日 ) - 1 ;Year ( 日付② ) - Year ( 生年月日 )
)
このように5つになってます。
空とABCとDの3つになってませんよ。

Offline

#3 2016-11-30 13:15:10

Hiro
Member

Re: 複数条件下での年齢計算

条件に合う日付を変数「$適用日」に入れて、
年齢計算の汎用関数式を変数「$年齢関数」に定義し、
Evaluate($年齢関数)で計算実行する。


Let([
   $適用日=Case(FilterValues(条件; List("A";"B";"C"))<>""; 日付①; 条件="D"; 日付②);
   $誕生日=生年月日;
   $年齢関数="Int(Year($適用日)+Month($適用日)/100+Day($適用日)/10000-Year($誕生日)-Month($誕生日)/100-Day($誕生日)/10000)"
];
   Evaluate($年齢関数)
)

Last edited by Hiro (2016-11-30 13:49:57)

Offline

#4 2016-11-30 15:34:05

beginner
Guest

Re: 複数条件下での年齢計算

>あるとさん
orの使い方、式のヒントありがとうございます。
美しくないですが式を書き直しました、とりあえず必要な値を出しています。

Case (
IsEmpty ( 生年月日 ) ; "" ;
(条件 = "A" or 条件 = "B" or  条件= "C") and 日付① < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付① ) ) ; Year ( 日付① ) - Year ( 生年月日 ) - 1 ;
(条件 = "A" or 条件 = "B" or  条件= "C") and 日付① ≥ Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付① ) ) ; Year ( 日付① ) - Year ( 生年月日 ) ;
条件 = "D" and 日付② < Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付② ) ) ; Year ( 日付② ) - Year ( 生年月日 ) - 1 ;
条件 = "D" and 日付② ≥ Date ( Month ( 生年月日 ) ; Day ( 生年月日 ) ; Year ( 日付② ) ) ; Year ( 日付② ) - Year ( 生年月日 )
)


>Hiroさん
変数使うととてもスマートですね!勉強になります。
そのままコピペして使おうかと思いましたが、自分なりに作りなおしてみました。
やっぱり駄目だった時はコピペさせていただきます。

お二方ともありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 507.68 KiB (Peak: 512.23 KiB) ]