首页 文章

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

提问于
浏览
0

这是关于我的项目(设计临床试验表)的后续问题 . 我的第一个问题是: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 回答

  • 1

    您的脚本和自动输入计算可以自动“知道”用户所在的选项卡 . 这是通过使用布局对象名称和函数Get(ActiveLayoutObjectName)来实现的 .

    在FileMaker中,每个布局或布局对象组都可以具有“名称” . 名称的唯一性由FileMaker强制执行,因此您不可能拥有2个同名对象 . 您可以通过“位置”选项卡上的“检查器”设置“布局对象名称” . 它在顶部 .

    在您的情况下,您可以为每个选项卡指定名称 . 这可以通过双击布局模式中的选项卡来完成 . 选中时,它周围有黑色边框 . 然后使用上述Inspector分配名称 .

    每个选项卡都有一个唯一的名称 . 您可以使用Get(ActiveLayoutObjectName)来确定用户当前具有哪个选项卡 .

    根据您的方案,您可以使用脚本执行此操作 . 或者,让数据库中的字段将自动输入计算设置为“Get(ActiveLayoutObjectName)”可能更容易 . 这样,数据库将记录创建记录时用户所使用的Tab . 哪个是我相信你想要的结果 .

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

    You might also consider:

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

    • 在Patient表上创建一个新的"JourCurrent"数字字段 .

    • 创建类似于上述的关系,再次允许在Tableau_Data_Jour表上创建新记录:

    Patient_ID :: Patient_ID = Tableau_Data_Jour :: Patient_ID

    Patient_ID :: JourCurrent = Tableau_Data_Jour :: Jour

    • 使用Jour的所有值创建一个新的值列表

    • 将JourCurrent字段放在布局上,并将其设置为从值列表中获取值作为弹出菜单 .

    • 让用户从弹出菜单中选择适合今天输入的Jour,而不是使用选项卡 .

    这对您的好处是您只需要维护每个相关字段(Tableau_Data_Jour字段)一次,并且您可以每个标签添加一个新字段而不是一次 .

相关问题