首页 > 解决方案 > Filemaker Pro - 使用脚本填充报告布局

问题描述

我有一个问题,我有一个表中的字段列表(不是静态的,可以由用户修改),我需要使用这些用户选择的字段生成报告。报表可以显示所有行,无需聚合或过滤。

我想我可以创建一个报告布局,然后使用 filemaker 脚本来填充它,但似乎找不到正确的命令,有人可以告诉我如何实现这一点吗?

我正在使用 filemaker pro 18 高级版

提前致谢!

标签: reportfilemaker

解决方案


编辑:既然您想要一个动态报告,那么我建议您查找一种称为“虚拟列表”的技术来呈现数据。

这是一个示例脚本,它遍历找到的记录集并在变量中构建虚拟列表数据(虽然它没有显示如何呈现它):

# Field names and delimiter
Set Variable [ $delim ; Value: Char(9) // tab character ] 
# Set these dynamically with a script parameter
Set Variable [ $fields ; Value: List ( "Contacts::nameFirst" ; "Contacts::nameCompany" ; "Contacts::nameLast" ) ] 
Set Variable [ $fieldCount ; Value: ValueCount ( $fields ) ] 

Go to Layout [ “Contacts” (Contacts) ; Animation: None ]
Show All Records
Go to Record/Request/Page [ First ]

# Loop over all the records and append a row in the $data variable for each
Set Variable [ $data ; Value: "" ] 
Loop
    # Get the delimited field values
    Set Variable [ $i ; Value: 0 ] 
    Set Variable [ $row ; Value: "" ] 
    Loop
        Exit Loop If [ Let ( $i = $i + 1 ; $i > $fieldCount ) ] 
        Set Variable [ $value ; Value: GetField ( GetValue ( $fields ; $i ) ) ] 
        Insert Calculated Result [ Target: $row ; If ( $i > 1 ; $delim ) & $value ] 
    End Loop
    enter code here
    # Append the new row of data to the list variable
    Insert Calculated Result [ Target: $data ; If ( Get ( RecordNumber ) > 1 ; ¶ ) & $row ] 
    Go to Record/Request/Page [ Next ; Exit after last: On ]
End Loop

# Save to a global variable to show in a virtual list layout
Set Variable [ $$DATA ; Value: $data ] 

Exit Script [ Text Result:    ]

请注意,此代码只是虚拟列表可以采用的许多可能格式之一。很多人,包括我自己,更喜欢对列表的每一行使用 JSON 对象或数组,因为它会自动处理带有回车的字段值。这是一种老式的方式。如果您有兴趣,FileMaker Hacks 的 Kevin Frank 最近有一些关于虚拟列表技术的好文章。

PS,另一种动态呈现表格数据的好方法是收集 JSON 数组中的数据并使用https://datatables.net/在 webviewer 中呈现它


推荐阅读