FileMaker:有没有办法在脚本中构建导出顺序?

时间:2011-04-22 05:30:00

标签: filemaker

问题:有没有办法在执行脚本时构建导出订单?如果可能的话,我更喜欢FileMaker-native或FileMaker-called AppleScript解决方案。

项目:该项目是一个报告工具,按用户可选择的标准汇总销售信息(单位,价格,成本),如:周,季度,年份,地点,产品,供应商等。我想要一种方法在运行时,根据用户选择的标准指定导出。

示例:如果用户选择按供应商每季度汇总的销售单位,我希望能够选择脚本:

分组:

  1. 季度
  2. 供应商
  3. 出口订单

    1. 季度
    2. 按季度的单位摘要
    3. 供应商
    4. 供应商的单位摘要
    5. 显然有很多排列,因此为每组选项设置每个单独导出的导出是不可行的。

3 个答案:

答案 0 :(得分:1)

如果目标格式是基于文本的(即制表符或逗号分隔的),那么我将导出到XML并编写XSLT以根据需要对其进行汇总。要将参数传递给XSLT,我通常会将一个小的XML文件导出到同一个文件夹中。

答案 1 :(得分:1)

我能想到的解决方案是导出计算而不是原始字段。使用您提供的示例,假设用户最多可以导出两个字段。您创建两个计算字段和两个文本字段。文本字段存储要导出的字段的名称,计算字段使用Evaluate(或GetField)来获取字段的内容。如果您还要导出日期和时间字段,它会变得复杂,但它仍然可行。如果需要在导出中包含字段名称,则需要创建一个额外的记录,并对该记录进行计算,以包含用户选择的字段的名称。

不是微不足道的,但仍有可能。

答案 2 :(得分:0)

基于Mikhail和Chuck的建议,我认为这个特定项目的最佳方法是在全局字段中构建.csv的内容,然后导出字段内容。我正在做的基本概要:

Go to the first record
Loop
  WriteTheRows (see below), comma delimited, to a global field
  Set $thisGroup to the count of records summarized by this summary field
  Exit Loop If Get (CurrentRecord) + $thisGroup >= Get (FoundCount)
  Go to record [Get (CurrentRecord) + $thisGroup]
End Loop
Export Field Contents [global field]

WriteTheRows 是一个自定义函数,可执行以下操作: 我正在尝试编写的输出可以同时按多达7个不同的标准排序(例如:我可以按季度总结供应商销售额,或者我可以总结供应商的季度销售额)

Compare the highest level sort field's value to the last value we found for the highest level sort field.
   If they're different WriteALine to the global field for this sort field, the next sort field, all sort fields down to the lowest level.
   If they're the same, compare the (highest level sort field - 1) to the stored value for the (highest level sort field - 1)
      If they're the same, WriteALine to the global field for the (highest level sort field - 1) on down to the lowest level sort field
      ... repeat until we're down to the lowest sort field

WriteALine 是另一个自定义函数,它使用GetSummary(revenueSummary; Evaluate(“summaryField”& summaryFieldNumber)添加适当的标签,逗号和值,正如Chuck在答案中所建议的那样。