Filemaker Pro为另一个表中的每个选定记录添加条目

时间:2014-02-17 15:24:09

标签: database filemaker

我有两个与公共字段链接的表。我正在尝试设置脚本或布局或任何可能有效的方法来实现以下目的。 我需要能够从表1中选择某些记录,然后让程序给我一个视图,允许我为表1中的每个选定记录添加一个表到表2.表2有我想要的多个字段为所有选定的记录只完成一次。 我假设我需要设置一个带循环的脚本,但如果有人能让我开始使用基础知识,我将非常感激。或者,如果有一种方法可以使用布局,那也很棒!使用Filemaker Pro 12.

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你正在描述牛和事件之间的多对多关系:每只动物可以有多个相关的事件;并且事件可以涉及多个动物。

如果这是正确的,您将需要第三个 join 表来将多对多关系解析为两个一对多关系:

Cattle -< CattleEvents >- Events

这种方式有效,您可以将事件的数据输入到事件表中,然后通过在CattleEvents表中为每个动物创建连接记录,继续将不同的动物与事件相关联。连接表需要包含(至少)CattleID和EventID的字段。

与其他RDBMS不同,Filemaker还允许您在没有连接表的情况下创建多对多关系;您可以将Events表中的CattleID字段定义为文本,并使用CattleID的值列表将其格式化为复选框。然而,这种“捷径”在总结和报告方面有许多缺点。此方法的另一个问题是您无法记录关于连接的任何特定内容:例如,使用连接表,您不仅可以记录影响46种选定动物的疫苗接种事件;您还可以记录每只动物接受的个体剂量,方法是将其输入到连接表中的一个字段中。


<强>增加:

在Cattle表中找到所需的发现集后,转到Events表,创建一个新记录,然后让脚本执行以下操作:

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 ]

在脚本结束时,您应该回到事件表中,将Cattle表中找到的集合中的所有牛出现在CattleEvents的门户中(假设您已将这样的门户放置在事件的布局上)。在该门户网站中,您可以为每个与该事件相关的动物添加特定数据。