请参阅我创建的FileMaker Pro 12数据库链接以说明我的问题:
https://dl.dropboxusercontent.com/u/24821795/Example.fmp12
我想计算一个活动被分配给一名工作人员的次数,但是有一些事情让它变得棘手(我希望不是不可能):
在提供的示例中,SelfJoinCount和Activities :: Count不是我想要的 - 它们都计算活动(例如射箭已分配给两名工作人员),但不符合上述标准1.
尝试执行Find of Gender = M
ReviewCount(一个汇总字段,计算已审核)的值更改为3,这就是我想要的。
SelfJoinCount和Activities :: Count的值不会更改。在这种情况下,我希望它们变为1(即一个带有气球的记录,一个带有观鸟的记录和一个带有射箭的记录)。
如果活动发生,我可以创建一个带有1的计算字段,然后为数据库中的每个单个活动创建一个计数为1的汇总字段,但是由于上面的标准2,这将无法工作(同样,那里是很多活动。)
有什么想法吗?
答案 0 :(得分:0)
好的,你有几个问题。
首先,您需要表格的键值。这可以通过在每个表中创建一个数字字段来轻松完成。在选项中,选择自动输入序列号,验证唯一,而不是空。
现在,您需要第3个表来进行连接。此表将具有Staff成员的外键值以及活动的外键。
您需要在表单视图中使用Staff布局,在连接表中添加一个门户,其中包含活动的外键字段。为活动创建弹出窗口或下拉列表(提示:如果您希望活动的名称显示在布局而不是其键中,请使用弹出窗口。)它需要具有键值并显示第二个字段,所有值,仅显示第二个字段的值。
这将允许您在表之间建立多对多的关系,这样一个员工可以有很多活动,而一个活动可以有很多员工。
现在,如果你想要计算每个活动的数量,你当然可以在staff表中创建计算字段来计算每个活动类型的实例,但我发现这很麻烦且耗时,并且要求你创建TO的每项活动。你真正想要使用的是ExecuteSQL()函数。有点像这样:
的ExecuteSQL(“
SELECT COUNT(J.FK_ActivityID) 来自JoinTable J. J.FK_StaffID =? 由J.FK_ActivityID分组“;”“;”“; Staff :: PK_StaffID)
您可以调整ExecuteSQL以包含特定活动,或者保留它,因为它包含所有活动。由你决定如何做到这一点。
如果不是早上7点并且没有睡觉,我会为你模拟文件,但我认为你会更好地测试它并自己动手。