这是关于我的项目(设计临床试验表)的后续问题 . 我的第一个问题是: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 回答
您的脚本和自动输入计算可以自动“知道”用户所在的选项卡 . 这是通过使用布局对象名称和函数Get(ActiveLayoutObjectName)来实现的 .
在FileMaker中,每个布局或布局对象组都可以具有“名称” . 名称的唯一性由FileMaker强制执行,因此您不可能拥有2个同名对象 . 您可以通过“位置”选项卡上的“检查器”设置“布局对象名称” . 它在顶部 .
在您的情况下,您可以为每个选项卡指定名称 . 这可以通过双击布局模式中的选项卡来完成 . 选中时,它周围有黑色边框 . 然后使用上述Inspector分配名称 .
每个选项卡都有一个唯一的名称 . 您可以使用Get(ActiveLayoutObjectName)来确定用户当前具有哪个选项卡 .
根据您的方案,您可以使用脚本执行此操作 . 或者,让数据库中的字段将自动输入计算设置为“Get(ActiveLayoutObjectName)”可能更容易 . 这样,数据库将记录创建记录时用户所使用的Tab . 哪个是我相信你想要的结果 .
如果您只有少量的Jour值(5,如您所示),您可能最容易为每个Jour值设置新的关系 - 每个选项卡一个 .
对于您的Patient_ID表,您将为每个Jour值添加一个新字段 . 每个字段都是一个计算字段,计算值是Jour的特定值 . 例如,Patient_ID表将具有以下值:
然后,您将设置5个新关系,将Patients_ID和每个Jour字段(一次一个)链接到Tableau_Data字段的新表事件(标记为,此示例为Tableau_Data_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字段)一次,并且您可以每个标签添加一个新字段而不是一次 .