我正在使用FMP 14,并希望根据以下计算方式自动填充字段A
:
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v1" ; "1st" ) or
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v2" ; "2nd" ) or
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v3" ; "3rd" ) or
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v4" ; "4th" ) or
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v5" ; "5th" ) or
If ( Get ( ActiveLayoutObjectName ) = "tab_Visits_v6" ; "6th" )
以上代码应该在字段1st
中自动填充值2nd
,3rd
,A
...,具体取决于对象的名称{ {1}}函数返回。我已经为每个选项卡命名,但计算仅返回0.
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:0)
编写计算的方式很有意义。每个If()语句都返回“1st”,“2nd”等结果或者没有结果(空字符串)。然后,您将or
应用于所有这些结果。因为只有它们才是真的,所以你的计算基本上是这样的:
"" or "2nd" or "" or "" or "" or ""
碰巧返回1(真),但没有用处。
你应该在这里使用Case()函数:
Case (
Get ( ActiveLayoutObjectName ) = "tab_Visits_v1" ; "1st" ;
Get ( ActiveLayoutObjectName ) = "tab_Visits_v2" ; "2nd" ;
Get ( ActiveLayoutObjectName ) = "tab_Visits_v3" ; "3rd" ;
Get ( ActiveLayoutObjectName ) = "tab_Visits_v4" ; "4th" ;
Get ( ActiveLayoutObjectName ) = "tab_Visits_v5" ; "5th" ;
Get ( ActiveLayoutObjectName ) = "tab_Visits_v6" ; "6th"
)
另请注意,由于用户切换选项卡,计算字段可能无法始终刷新自身。这是指未存储的计算字段;如果您尝试将此作为公式自动输入“常规”(例如文本)字段,则永远不会更新。
这是我们的情况。我们最多看病人6次。我们有 这6次访问中的每一次都有一个标签。
我建议你使用门户到相关的访问表而不是标签控件。选项卡控件旨在显示用户界面的固定组件 - 而不是动态数据。当然不是数据分成单独的记录。每个患者应该只有一个独特的记录 - 并且每个患者的访问记录可能是必要的(可能是无限的)。
如果您愿意,可以使用门户行作为按钮来选择特定访问以更详细地查看(类似于选项卡控件,但门户将“选项卡”显示为垂直行除外)。我相信,按用户选择过滤的同一个Visits表的一行门户网站可以很好地用于此目的。
答案 1 :(得分:0)
用1. ....这很容易:
Right (Get ( ActiveLayoutObjectName ) ; 1) & "."
感谢您指出,我的第一个版本不起作用。