FileMaker: есть ли способ создать порядок экспорта в сценарии? - PullRequest
1 голос
/ 22 апреля 2011

Вопрос: есть ли способ построить экспортный заказ при выполнении скрипта? Я бы предпочел решение AppleScript, родное для FileMaker или FileMaker, если это возможно.

Проект: Проект представляет собой инструмент отчетности, который обобщает информацию о продажах (единицы, цена, стоимость) по выбранным пользователем критериям, таким как: неделя, квартал, год, местоположение, продукт, поставщик и т. Д. Я хотел бы получить способ укажите во время выполнения экспорт на основе выбранных пользователем критериев.

Пример. Если пользователь выбрал количество проданных единиц в сумме по поставщикам за квартал, я хотел бы иметь возможность выбрать сценарий:

Сгруппировать по:

  1. 1010 * квартал *
  2. 1012 * поставщик *

Экспортный заказ

  1. Четверть
  2. Сводка единиц по кварталам
  3. поставщик
  4. Сводка по поставщикам

Очевидно, что существует множество перестановок, поэтому настройка экспорта для каждого отдельного экспорта для каждого набора параметров невозможна.

Ответы [ 3 ]

1 голос
/ 23 апреля 2011

Решение, которое я могу придумать, - экспортировать вычисления, а не исходные поля.В приведенном вами примере предположим, что пользователь может экспортировать до двух полей.Вы создаете два поля вычисления и два текстовых поля.В текстовых полях хранится имя поля для экспорта, а в полях расчета используется Evaluate (или GetField) для получения содержимого полей.Это становится сложным, если вы также экспортируете поля даты и времени, но это все еще работоспособно.Если вам нужно включить имена полей в экспорт, вы создаете дополнительную запись и выполняете свои вычисления для этой записи, чтобы они содержали имена полей, выбранных пользователем.

Не тривиально, но все же возможно.

1 голос
/ 22 апреля 2011

Если целевой формат основан на тексте (то есть разделен табуляцией или запятыми), тогда я экспортирую в XML и напишу XSLT, чтобы обобщить его при необходимости. Чтобы передать параметры в XSLT, я обычно экспортирую небольшой файл XML в ту же папку.

0 голосов
/ 26 апреля 2011

Основываясь на предложениях Михаила и Чака, я думаю, что лучшим способом для этого конкретного проекта будет создание содержимого .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 (доходаSummary; Evaluate ("summaryField" и summaryFieldNumber), как Чак предлагает в своем ответе.

...