みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になります。FileMaker pro 16 Advancedを使用しています。
生年月日を、年、月、日と3つのフィールドで保存しています。そこから計算をして年齢を計算で入力できるようにしたいと考えています。
よろしくお願いします。
Offline
生年月日を1つの日付フィールドにしていないのには理由があるのですか?
年の入力が西暦なのか和暦なのか入力者によってバラバラなのでしょうか?
要は生年月日が正しい日付形式で取得できれば考え方は簡単です。
今年の年と生年月日の年の差から今年の誕生日を迎えていなければ1を引きます。
Let ( [
~生年月日 = 日付フィールド ;
~今年の誕生日 = Date ( Month ( ~生年月日 ) ; Day ( ~生年月日 ) ; Year ( Get ( 日付 ) ) )
] ;
Year ( Get ( 日付 ) ) - Year ( ~生年月日 ) - ( ~今年の誕生日 > Get ( 日付 ) )
) // Let
Last edited by Moz (2018-01-06 15:35:54)
Offline
ありがとうございます。1つではない理由としてはそういう要望でしたので。
年の入力に関しては、バラバラではなく西暦です。
Offline
生年月日の求め方としては
Date ( 月フィールド ; 日フィールド ; 年フィールド )
※それぞれ数字フィールドで年は4桁で入れていると仮定して。
Date 関数
https://fmhelp.filemaker.com/help/16/fm … Fdate.html
あとは先の投稿の式に当てはめるだけです。
Offline
int ( 年 + 月 / 100 + 日 / 10000 - Year ( Get ( 日付 ) ) - Month ( Get ( 日付 ) ) / 100 - Day ( Get ( 日付 ) ) / 10000 )
が簡単で良いですよ。
Offline
Mozさん ありがとうございます。
Date関数の詳細の所まで教えていただきありがとうございます!
Shinさん ありがとうございます。
一度やってみましたが、なぜか -12のように、マイナス表記がされてしまいます。
Offline
以下に変えてはどうでしょう。
Int ( ( Year ( Get ( 日付 ) ) + Month ( Get ( 日付 ) ) / 100 + Day ( Get ( 日付 ) ) / 10000 ) - ( 年 + 月 / 100 + 日 / 10000 ) )
生年月日と今日を YYYY.MMDD の形式にして 今日 - 生年月日 の差から小数点以下を捨てるという考え方でしょうかね。
補足)になってなかったらゴメンナサイ。
8月28日生まれ
0.0107 - 0.0828 は負になるので年の計算から1引かれます。
1月1日生まれ
0.0107 - 0.0101 は正のままなので年の計算そのまま。
Last edited by Moz (2018-01-07 07:26:14)
Offline
引く順番を間違えました。申し訳ないです。
Offline
Mozさん 違う案にも関わらず教えていただきありがとうございます!
Shinさん いえいえ、こちらも考えさせる形で有り難かったです。
解決しました。ありがとうございました!
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 562.77 KiB (Peak: 586.16 KiB) ]