我们有以下语法来计算年份,然后是2位小数。该公式有效,除非生日是一整年(10年,0个月; 10.0)。问题是小数点在没有任何月份的情况下整年都会向右移动。一岁的孩子将显示为10.0岁,一个9岁的孩子将显示为90.0。我们将非常感谢脚本中修复此故障的任何指导!
Year ( GetAsNumber ( DOE )) - Year ( DOB ) - If ( GetAsNumber ( DOE ) < Date ( Month ( DOB ) ; Day ( DOB ) ; Year ( GetAsNumber ( DOE ) ) ); 1 ; 0 ) & ( Mod ( Month ( GetAsNumber ( DOE ) ) - Month ( DOB ) + 12 - If ( Day ( GetAsNumber ( DOE ) ) < Day ( DOB ) ; 1 ; 0 ) ; 12 ) / 12)
答案 0 :(得分:0)
您的方法的主要问题是,当您应该使用数字&
运算符时,您正在使用文本运算符+
。
因此,当Mod()
函数返回零时(即,当间隔是整数年时),您将向结果附加字符串值"0"
。
我还建议你将计算简化为:
Let (
elapsedMonths = 12 * ( Year ( DOE ) - Year ( DOB ) ) + Month ( DOE ) - Month ( DOB ) - ( Day ( DOE ) < Day ( DOB ) )
;
Div ( elapsedMonths ; 12 ) + Mod ( elapsedMonths ; 12 ) / 12
)
此计算的结果是一个数字。要显示带有两位小数的数字,请将字段格式化为十进制,然后选择&#39;固定小数位数&#39; 选项。
P.S。请注意,Year()
,Month()
和Day()
函数需要 date 作为参数。当你这样做时:
Year ( GetAsNumber ( DOB ))
FileMaker将执行它:
Year ( GetAsDate ( GetAsNumber ( DOB )))
由于DOB
(大概)是一个开始的日期,因此当您应该使用简单时,您只会复制不必要的类型转换:
Year ( DOB )