report - Filemaker Pro - 使用脚本填充报告布局
问题描述
我有一个问题,我有一个表中的字段列表(不是静态的,可以由用户修改),我需要使用这些用户选择的字段生成报告。报表可以显示所有行,无需聚合或过滤。
我想我可以创建一个报告布局,然后使用 filemaker 脚本来填充它,但似乎找不到正确的命令,有人可以告诉我如何实现这一点吗?
我正在使用 filemaker pro 18 高级版
提前致谢!
解决方案
编辑:既然您想要一个动态报告,那么我建议您查找一种称为“虚拟列表”的技术来呈现数据。
这是一个示例脚本,它遍历找到的记录集并在变量中构建虚拟列表数据(虽然它没有显示如何呈现它):
# 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 中呈现它
推荐阅读
- python - 如何从 YouTube Analytics api 的 json 文件加载客户端凭据?
- windows - 如何在 Rust 中设置 Windows 目录的隐藏属性?
- objective-c - 使用 for 循环来区分短语
- javascript - 测试 'isChecked' 属性是否已更改
- firebase - Firebase“too_big”错误查询具有大量子项的 ref
- node.js - 如何在mongodb的0对象数组中插入数据
- ionic-framework - 当我调用 storage.get(key) 时,IONIC Storage 为空
- spring-boot - 相同应用程序实例之间的 Pivotal Cloud Foundry p2p 通信
- c# - 客户端的多人碰撞问题
- python - 任何实际有效的 concurrent.futures 超时?