Filemaker Pro:根据选项卡为字段分配值

时间:2012-04-26 11:44:16

标签: filemaker

这是关于我的项目(设计临床试验表)的后续问题。我的第一个问题是: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,依此类推。但我甚至不知道该怎么做。

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表中的字段。

您可能还会考虑:

以上应该可以正常工作,但它很难看并为你创造了很多工作。如果标签不是严格的要求,我建议改为:

  1. 在Patient表上创建一个新的“JourCurrent”数字字段。
  2. 创建类似于上述的关系,再次允许在Tableau_Data_Jour表上创建新记录:

    Patient_ID :: Patient_ID = Tableau_Data_Jour :: Patient_ID

    Patient_ID :: JourCurrent = Tableau_Data_Jour :: Jour

  3. 使用所有Jour值

  4. 创建一个新的值列表
  5. 将JourCurrent字段放在布局上,并将其设置为从值列表中获取值作为弹出菜单。
  6. 让用户从弹出菜单中选择适合今天输入的Jour,而不是使用标签。
  7. 这对您的好处是您只需要维护每个相关字段(Tableau_Data_Jour字段)一次,并且您可以为每个标签添加一次新字段而不是一次。