FileMaker 行分隔数组操作

FileMaker Line Delimited Array Manipulation

我有很多公司的一组数据。例如,Acme 公司制造的小部件数量。每条记录都包含每天的产量,我把它放在小计部分,这样我们就可以看到整个月的产量,并比较所有不同公司的产出。

我需要完成的是添加一个过滤器,以从列表中删除一些每月产量低于一定数量的公司。如果他们整个月只生产 2 个小部件,而平均是 20 个,我们就不必为 Acme 公司操心了。

我目前尝试使用的方法是将自定义数组中的所有值相加。到目前为止,我正在使用两个自定义函数。如果我提供索引,FindInList will tell me if a company already exists in the line delimited array and ArrayValue 会告诉我数组中的值是什么。我缺少的是在我提供索引时获取此列表并编辑数组中的一行的能力。如果我明白了,那么我就可以轻松地将公司的所有月度总计相加,找出低于某个点的,然后将其过滤掉。有人知道怎么做吗?

我不受这种方法的束缚。如果有人知道完成此任务的更好方法,我将非常乐意考虑。

恕我直言,最简单的方法是按公司对记录进行排序,按摘要字段(总金额)降序+重新排序。然后做:

Go to Record/Request/Page [ First ] 
Loop 
    # IF CURRENT GROUP DOESN'T MEET THE CRITERIA... 
    If [ GetSummary ( YourTable::sTotalAmount ; YourTable::Company ) < 0 ] 
        # ... OMIT REMAINING RECORDS 
        Omit Multiple Records [ No dialog; Get ( FoundCount ) - Get ( RecordNumber ) + 1 ] 
    Else 
        # JUMP TO NEXT GROUP 
        Go to Record/Request/Page [ No dialog; Get ( RecordNumber ) + GetSummary ( YourTable::sCount ; YourTable::Company ) ] 
    End If 
    Exit Loop If [ Get ( RecordNumber ) = Get ( FoundCount ) ] 
End Loop 

注:

  • sCount 是一个汇总字段,定义为:Count of [ any field that cannot be empty ].
  • 在这个例子中,0是一组的最小子汇总金额 显示在报告中。

来源:改编自 Mikhail Edoshin 的 'Fast Summaries' 技巧。