Помогите новичку
Купили FastReport 3.19. Ну с простыми отчётами более менее ясно. А вот как средствами FR пешить следующую, по идее достаточно типичную задачу, подскажите, спецы...?
Есть:
- таблица изделий с их количеством;
- таблица материалов из которых данное изделие состоит;
- таблица расхода этих материалов на одно изделие, следующей структуры:
код изделия,
код материала,
расход материала на изделие.
Необходимо сделать отчёт, в котором по строкам изделия, по столбцам материалы, т.е. сводный расход материалов по изделиям.
Подскажите каков алгоритм создания такого отчёта средствами FastReport, а то не хочется создавать в базе какие-то временные таблицы или массивы в Delphi.
Работаю в Delphi7 с б/д Firebird1.1 используя FIBPlus.
Ну и вопрос общего плана. КАК СТАНОВЯТСЯ СПЕЦАМИ ПО FastREport? В том смысле, что где почерпнуть на русском языке базовые знания? А то всё, что встречал - это либо декларация впечатляющих возможностей, либо справочные данные для посвящённых, к которым себя не отношу
Есть:
- таблица изделий с их количеством;
- таблица материалов из которых данное изделие состоит;
- таблица расхода этих материалов на одно изделие, следующей структуры:
код изделия,
код материала,
расход материала на изделие.
Необходимо сделать отчёт, в котором по строкам изделия, по столбцам материалы, т.е. сводный расход материалов по изделиям.
Подскажите каков алгоритм создания такого отчёта средствами FastReport, а то не хочется создавать в базе какие-то временные таблицы или массивы в Delphi.
Работаю в Delphi7 с б/д Firebird1.1 используя FIBPlus.
Ну и вопрос общего плана. КАК СТАНОВЯТСЯ СПЕЦАМИ ПО FastREport? В том смысле, что где почерпнуть на русском языке базовые знания? А то всё, что встречал - это либо декларация впечатляющих возможностей, либо справочные данные для посвящённых, к которым себя не отношу
Комментарии
Для построения отчёта нужно будет сделать выборку из всех трёх таблиц таким образом, чтобы в результате получился датасет с тремя полями: наименование изделия, наименование материала, расход материала. Из данных этого датасета и строится Cross-tab отчёт.
В дополнение к совету Denа, могу посоветовать изучить демо отчёты. В них показано решение типичных задач
Имеем колонки таблицы (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 = ..." берем из таблицы-справочника всех материалов.