Filemaker - 如何根据门户网站标准对IF进行求和

时间:2015-07-30 00:39:57

标签: filemaker

你不得不原谅我,因为我仍然是Filemaker的新手。

我经历了很多谷歌搜索建立了一个数据库,我们用它来记录与饲料场饲料相关的牲畜的所有细节。

我们在单独的“财务”表中输入发票明细。发票均通过“EID”(电子身份)链接到特定动物并包含成本代码(即,成本代码“B”代表购买费用,成本代码“TI”代表运输到设施中。)

然后,有关单个动物的财务详细信息将显示在其“财务”选项卡上的门户中。

我想要显示的是基于成本代码的单个动物的门户详细信息摘要。

Cost Code   Total Value
B               x
TI              x

我试图将计算放入财务表中。

If(Cost Code  =  "B"; Total ; )

然而,有时会显示,有时会显示。

如果我尝试

If(Cost Code  =  "TI"; Total ; )

根本不会显示。

我在下方添加了一个屏幕截图,显示了财务门户网站以及门户网站所依据的字段。

Screen shot

3 个答案:

答案 0 :(得分:0)

如果我理解,您希望基于Financials :: CostCode创建汇总总计。这是内置于FileMaker的列表视图中,但不幸的是,它在FileMaker门户中是免费的。

执行此操作的一种方法是在Animals表中设置一系列costCodeTotal字段。这些字段中的每一个都可以使用SQL来获取costCode聚合的相关财务值的总和。使用原始SQL(FileMaker中不推荐,但为简单起见,此处显示),每个字段的代码都类似于:

ExecuteSQL ( List(
  SELECT sum(cost);
  FROM financials;
  WHERE costcode = <a cost code> AND animalID = ?
  );
"";""; <the animal id>
)

这假设您有一组相对较小且有限的成本代码。

还有其他几种方法可以做到这一点,但这种方法的优点是您不需要为每种成本代码类型建立自定义关系,而传统的FileMaker方法通常需要这种关系。

答案 1 :(得分:0)

Filemaker没有SumIf()函数。还有其他几种方法可以仅汇总所选的相关记录。例如,您可以使用过滤的门户网站(仅限一行),按表达式过滤:

Financials::Cost Code = "B"

并将Cost Code字段以及在门户中定义的汇总字段(在Financials表中)作为Value的总和。

这样做的好处是不需要任何额外的关系。

答案 2 :(得分:0)

你走在正确的轨道上,虽然我不确定为什么它不能正常工作。您需要创建存储桶字段以放置总计。但是,您的计算结果看起来有些偏差。我会写这样的东西:

Case (
  Cost Code = "B" ; Total ;
                    0
)

确保您已取消选中Do not evaluate if all referenced fields are empty可能成为麻烦的来源。

如果仍然无效,请尝试另一个功能相同但使用不同逻辑的计算,例如

Total * ( Cost Code = "B" )

正确填充存储桶后,您可以使用Sum函数获取相关存储桶的总和。

total_b = Sum ( Financials::total_b )

作为一般故障排除提示,请尝试一次构建一个计算方法。从Total开始,然后转到Case ( True ; Total ; 0 ),最后转到最终表单。确保每个步骤都能产生您期望的效果。您的屏幕截图显示了您使用FileMaker Pro。访问FileMaker Pro Advanced的数据查看器对这些类型的案例有很大帮助。