Простой отчет Master - Detail

отредактировано 05:39 Раздел: FastReport 2.xx VCL
Добрый день!
Разбираюсь с FastReports, чтобы убедить начальство перейти на него с Rave'а.
Однако не все так радужно оказалось, как хотелось бы ;)
В частности делаю простой отчет из двух таблиц.

Бэнд 1: Таблица "Счета" (master band)
Данные о счете

Бэнд 2: Таблица "Операции" (detail band)
Данные о проводках по данному счету

Бэнд 3: (detail footer band)
Суммы по проводкам

И закончить все это нужно еще одним бэндом, в котором должна быть итоговая информация по СЧЕТУ. Как мне подсказывала логика, это должен быть master footer band. Однако если я использую бэндэтого типа, то итоговая информация о счету выводится в самом конце отчета, причем неверная. Пытался сделать другие типы бэндов, но ничего не вышло.
Помогите, пожалуйста!

Комментарии

  • отредактировано 05:39
    Выводить информацию по счету надо в Бэнд3, тогда все ок. MasterFooter печатается один раз в конце всей группы, так и должно быть.
  • отредактировано August 2004
    написал:
    Выводить информацию по счету надо в Бэнд3, тогда все ок
    Нет, так не ок, совсем не ок.
    В Бэнд3 выводится информация по суммам проводок.
    А в недостающем бэнде должна быть информация по счету.
    Если принять ваш вариант, то:
    если не было проводок, то и инфомация по счету (заключительная) не выводится, а это совсем не ок. Нужна.

    ---
    Счет такой-то
    Валюта такая-то
    ---
    Проводка 1
    Проводка 2
    ...
    Проводка Х
    ---
    Суммы по проводкам
    ---
    Входной остаток по счету
    Выходной остаток по счету
    ---

    Есть начальная и завершающая информация о счете, а между ними - проводки. Такую форму не я придумал, а реализовать нужно именно мне. Можно ли еще какие-то варианты применить?
  • отредактировано 05:39
    В таком случае придется использовать subreport. Структура такая:
    основной отчет:
    master data - счет
    child1 - сабрепорт
    child2 - итого по счету

    сабрепорт:
    master data - проводки
    master footer - итого по проводкам


    childы надо связать: masterdata.childband := child1 и child1.childband = child2
  • отредактировано 05:39
    Получилось, спасибо!
    Но смущает то, что не все тривиально "в Датском королевстве" ;)
    Прочитал доступные хелпы, порылся в форуме, но сам бы до решения этой задачи не догадался бы.
    написал:
    MasterFooter печатается один раз в конце всей группы, так и должно быть.
    Я ни в коем случае не собираюсь спорить с вашей логикой, но я хочу понять ее, чтобы не обращаться за каждой мелочью в форум.
    Объясните, пожалуйста, почему это в конце каждой группы? У меня и группы никакой нет. Я наивно предполагал, что MasterFooter должен напечататься в конце каждой записи мастердатасета - сразу после связанной detail-информации (если таковая есть). Развейте мое невежество, пожалуйста.
  • отредактировано 05:39
    На примере покажу, как печатаются data, footer и header. Допустим, есть отчет:

    master header
    master data
    master footer

    Он будет напечатан так:

    master header
    master data
    master data
    master data
    ...
    master footer


    То же с отчетом типа master-detail:

    master header
    master data
    master footer
    detail header
    detail data
    detail footer

    Он будет напечатан так:

    master header
    master data

    detail header
    detail data
    detail data
    detail data
    ...
    detail footer

    detail header
    detail data
    ...
    detail footer
    ...
    master data
    [опять все detail]
    ...
    master footer

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.