FMP 14 - 根据计算自动填充字段

FMP 14 - Auto Populate a Field based on a calculation

我正在使用 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" ) 

以上代码应该根据对象的名称在字段 A 中自动填充值 1st2nd3rd ... Get (ActiveLayoutObjectName) 函数 returns。我已经为每个选项卡命名,但计算只返回 0。

如有任何帮助,我们将不胜感激。

谢谢。

您的计算方式毫无意义。每个 If() 语句 return 都是“1st”、“2nd”等的结果,或者什么都没有(空字符串)。然后您将 or 应用于所有这些结果。因为只有它们可能是真的,你的计算基本上是在做这样的事情:

 "" or "2nd" or "" or "" or "" or ""

恰好 return 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" 
) 

另请注意,由于用户切换选项卡,计算字段可能并不总是自行刷新。这里指的是一个unstored计算字段;如果您尝试将其用作自动输入“常规”(例如文本)字段的公式,它将 永远不会 更新。


已添加:

Here is our situation. We see a patient a maximum of 6 times. We have a tab for each one of those 6 visits.

我建议您使用 portal 访问 related table 而不是选项卡控件。选项卡控件旨在显示用户界面的 固定 组件 - 而不是动态 数据 。当然不是将数据拆分成单独的记录。您应该为每位患者只有一个唯一的记录 - 并且根据需要为每位患者的就诊记录尽可能多(可能无限制)。

如果愿意,您可以将门户行用作 select 特定访问的按钮以查看更多详细信息(类似于选项卡控件,只是门户将 "tabs" 显示为垂直行)。我相信,由用户 selection 过滤的相同访问 table 的单行门户将非常适合此目的。

有了 1. .... 会很简单:

Right (Get ( ActiveLayoutObjectName ) ; 1) & "."

感谢您指出,我的第一个版本不起作用。