Помогите новичку

отредактировано 10:38 Раздел: FastReport 3.0
Купили FastReport 3.19. Ну с простыми отчётами более менее ясно. А вот как средствами FR пешить следующую, по идее достаточно типичную задачу, подскажите, спецы...?
Есть:
- таблица изделий с их количеством;
- таблица материалов из которых данное изделие состоит;
- таблица расхода этих материалов на одно изделие, следующей структуры:
код изделия,
код материала,
расход материала на изделие.
Необходимо сделать отчёт, в котором по строкам изделия, по столбцам материалы, т.е. сводный расход материалов по изделиям.
Подскажите каков алгоритм создания такого отчёта средствами FastReport, а то не хочется создавать в базе какие-то временные таблицы или массивы в Delphi.
Работаю в Delphi7 с б/д Firebird1.1 используя FIBPlus.
Ну и вопрос общего плана. КАК СТАНОВЯТСЯ СПЕЦАМИ ПО FastREport? В том смысле, что где почерпнуть на русском языке базовые знания? А то всё, что встречал - это либо декларация впечатляющих возможностей, либо справочные данные для посвящённых, к которым себя не отношу ;)

Комментарии

  • отредактировано 10:38
    Посмотрите "Руководство пользователя" и " Руководство разработчика": http://www.fast-report.com/ru/documentation/
  • gpigpi
    отредактировано 10:38
    Если я правильно понял задачу, то Вам нужно использовать Cross-tab отчёт.
    Для построения отчёта нужно будет сделать выборку из всех трёх таблиц таким образом, чтобы в результате получился датасет с тремя полями: наименование изделия, наименование материала, расход материала. Из данных этого датасета и строится Cross-tab отчёт.
    В дополнение к совету Denа, могу посоветовать изучить демо отчёты. В них показано решение типичных задач
  • отредактировано 10:38
    Спасибо Den-у за рекомендации что скачать, для почитать. "Cross-tab отчёт" - пока ни о чём не говорит, но надеюсь после чтения вышеперечисленого проясниться. А демо-отчёты это те что с пакетом инсталируются, или есть ещё что-то на сайтах?
  • gpigpi
    отредактировано 10:38
    Да, демо отчёты находятся в папке FastReport\Demos\Main. Просто запустите проект из этой папки. В демо целая группа примеров посвящена Cross-tab отчётам
  • sdlsdl
    отредактировано 10:38
    Если не устраивает формирование кросс-таблицы средствами FastReport (например, хочется самому нарисовать заголовки колонок, настраивать их ширину в дизайнере и т.п.), то вот шаблон одного из типовых запросов, используемых для решения подобных задач. Он возвращает готовую регулярную кросс-таблицу.

    Имеем колонки таблицы (prodmat) расхода материалов:

    productid - код изделия;
    matid - код материала;
    amount - кол-во материала.

    Запрос:

    SELECT
    productid,
    SUM(CASE WHEN matid = 1 THEN amount ELSE NULL END) AS mat1,
    SUM(CASE WHEN matid = 2 THEN amount ELSE NULL END) AS mat2,
    SUM(CASE WHEN matid = 3 THEN amount ELSE NULL END) AS mat3,
    SUM(CASE WHEN matid = 4 THEN amount ELSE NULL END) AS mat4
    FROM prodmat
    GROUP BY productid;

    Видно, что строк "SUM(CASE ..." в этом запросе нужно столько, сколько колонок и по каким материалам хотим видеть в отчете (в общем случае - по всем возможным). Условие "matid = ..." берем из таблицы-справочника всех материалов.
  • отредактировано 10:38
    Спасибо за предложение, но количество материалов меняется и править запрос перед каждым отчётом - дело неблагодарноею. Кросс-отчёт - это как раз то что нужно, а все остальные красивости в скрипты

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

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