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' 技巧。
我有很多公司的一组数据。例如,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' 技巧。