这是关于我的项目(设计临床试验表)的后续问题。我的第一个问题是:Filemaker Pro: Create multiple entries of a table with Tab Control
为了简化,我创建了一个测试FMP文件。这是数据库的设计和布局
Database structure
Layout of the example
对于每位患者,我在患者表中创建记录 - Patient_ID是标识符。我将提供一些一般信息(这里我只使用了名称)。 在标记为“Tableau_Data”的另一个表上,我将存储一些数据 - Data_ID是标识符。患者“和”Tableau_Data“表与Patient_ID链接。
数据将始终由相同的字段组成(在我的示例中:“Turlututu”) - 实际上超过50个参数。我们将收集数据5天(所以我有5个标签)。感谢Sam Barnum的帮助,我可以通过使用门户网站在每个选项卡中获得不同的“Tableau_Data”记录。
但是我想在“Tableau_Data”的每个记录中存储它来自的标签(字段“Jour”)。所以我想根据选项卡设置“Jour”的自动值:脚本可能链接到门户或字段。但是如何?
理想情况下,我想隐藏“Jour”字段。
默认情况下,我可以创建一个下拉列表,让用户设置此变量的值。我宁愿那样。不符合人体工程学,可能会在捕获数据时导致错误。
Sam Barnum暗示,也许我可以预先生成Tableau_Data链接的5条记录到我的Patient_ID。因此,我知道记录1,6,11,16,...是Jour = 1和记录2,7,12,...是Jour = 2,依此类推。但我甚至不知道该怎么做。
答案 0 :(得分:1)
您的脚本和自动输入计算可以自动“知道”用户所在的选项卡。这是通过使用布局对象名称和函数Get(ActiveLayoutObjectName)。
来实现的在FileMaker中,每个布局或布局对象组都可以具有“名称”。名称的唯一性由FileMaker强制执行,因此您不可能拥有2个同名对象。您可以通过“位置”选项卡上的“检查器”设置“布局对象名称”。它在顶部。
在您的情况下,您可以为每个标签指定一个名称。这可以通过双击布局模式中的选项卡来完成。选中时,它周围有黑色边框。然后使用上述Inspector指定名称。
每个标签都有一个唯一的名称。您可以使用Get(ActiveLayoutObjectName)来确定用户当前处于活动状态的选项卡。
根据您的方案,您可以使用脚本执行此操作。或者,让数据库中的字段将自动输入计算设置为“Get(ActiveLayoutObjectName)”可能更容易。这样,数据库将记录创建记录时用户所使用的Tab。我相信你想要的结果。
答案 1 :(得分:0)
如果你只有少量的Jour值(5,如你所示),你可能最容易为每个Jour值设置新的关系 - 每个标签一个。
对于您的Patient_ID表,您将为每个Jour值添加一个新字段。每个字段都是一个计算字段,计算值是Jour的特定值。例如,Patient_ID表将具有以下值:
Patient_ID::Patient_ID
Patient_ID::Nom
Patient_ID::Jour1 (Calculation value set to 1)
Patient_ID::Jour2 (Calculation value set to 2)
...
Patient_ID::Jour5 (Calculation value set to 5)
然后,您将设置5个新关系,将Patients_ID和每个Jour字段(一次一个)链接到Tableau_Data字段的新表事件(标记为,例如,Tableau_Data_Jour#:)
Jour1
Patient_ID::Patient_ID = Tableau_Data_Jour1::Patient_ID
Patient_ID::Jour1 = Tableau_Data_Jour1::Jour
一路走来:
Jour5
Patient_ID::Patient_ID = Tableau_Data_Jour5::Patient_ID
Patient_ID::Jour5 = Tableau_Data_Jour5::Jour
对于每个新关系,您需要启用“允许通过此关系在此表中创建记录”。
然后,您将更改每个选项卡上的字段,以便Jour 1选项卡使用Tableau_Data_Jour1表中的字段,而Jour 5选项卡使用Tableau_Data_Jour5表中的字段。
您可能还会考虑:
以上应该可以正常工作,但它很难看并为你创造了很多工作。如果标签不是严格的要求,我建议改为:
创建类似于上述的关系,再次允许在Tableau_Data_Jour表上创建新记录:
Patient_ID :: Patient_ID = Tableau_Data_Jour :: Patient_ID
Patient_ID :: JourCurrent = Tableau_Data_Jour :: Jour
使用所有Jour值
这对您的好处是您只需要维护每个相关字段(Tableau_Data_Jour字段)一次,并且您可以为每个标签添加一次新字段而不是一次。