Filemaker Pro - Использование скрипта для заполнения макета отчета - PullRequest
0 голосов
/ 21 января 2020

У меня проблема с тем, что у меня есть список полей из таблицы (не может быть c, может быть изменен пользователем), и мне нужно создать отчет, используя эти выбранные пользователем поля. В отчете могут отображаться все строки, нет необходимости в агрегации или фильтрации.

Я думал, что мог бы создать макет отчета, а затем использовать скрипт filemaker для его заполнения, но не могу найти нужные команды, может кто-то дайте мне знать, как мне этого добиться?

Я использую Filemaker Pro 18 Advanced

Заранее спасибо!

1 Ответ

0 голосов
/ 21 января 2020

РЕДАКТИРОВАТЬ: Поскольку вы хотите динамический c отчет, то я рекомендую вам поискать технику под названием «Виртуальный список» для визуализации данных.

Вот пример сценария, который выполняет итерацию по найденному набору записывает и создает данные виртуального списка в переменной (хотя и не показывает, как ее отобразить):

# 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 недавно опубликовал несколько хороших статей о методах виртуальных списков.

PS. Еще один замечательный метод динамического рендеринга табличных данных - это сбор данных в массиве JSON и их рендеринг. в веб-обозревателе с https://datatables.net/

...