Set Variable [ $eventID ; Events::EventID ]
#
Go to Layout [ Cattle ]
Go to Record [ First ]
Loop
Set Variable [ $cattleIDs ; List ( $cattleIDS ; Cattle::CattleID ) ]
Go to Record [ Next ; Exit after last ]
End Loop
#
Go to Layout [ CattleEvents ]
Loop
Set Variable [ $i ; $i + 1 ]
Exit Loop If [ $i > ValueCount ( $cattleIDs ) ]
New Record
Set Field [ CattleEvents::EventID ; $eventID ]
Set Field [ CattleEvents::CattleID ; GetValue ( $cattleIDs ; $i ) ]
End Loop
#
Go to Layout [ original layout ]
1 回答
如果我理解正确,你正在描述牛与事件之间的多对多关系:每只动物可以有多个相关的事件;并且事件可以涉及多个动物 .
如果这是正确的,您将需要第三个连接表来将多对多关系解析为两个一对多关系:
通过这种方式,您可以将事件的数据 once 输入到事件表中,然后通过在CattleEvents表中为每个动物创建一个连接记录,继续将不同的动物与事件相关联 . 连接表需要包含(至少)CattleID和EventID的字段 .
与其他RDBMS不同,Filemaker还允许您在没有连接表的情况下创建多对多关系;您可以将Events表中的CattleID字段定义为文本,并使用CattleID的值列表将其格式化为复选框 . 然而,这种“捷径”在总结和报告方面有许多缺点 . 此方法的另一个问题是您无法记录关于连接的任何特定内容:例如,使用连接表,您不仅可以记录影响46种选定动物的疫苗接种事件;您还可以通过将其输入到连接表中的字段中来记录每只动物接收的个体剂量 .
ADDED:
在Cattle表中找到所需的发现集后,转到Events表,创建一个新记录,然后让脚本执行以下操作:
在脚本结束时,您应该回到事件表中,将Cattle表中找到的集合中的所有牛出现在CattleEvents的门户中(假设您已将此门户放置在事件的布局上) . 在该门户中,您可以为与事件相关的每只动物添加特定数据 .