Отчет в FastReport и условия

on-lite

Местный
Регистрация
7 Окт 2015
Сообщения
32
Реакции
30
Credits
54
Доброе время суток, уважаемые!
Есть старый проект по зарплате, писан еще в 2005 году на Delphi 6.
Отчеты генерируются в html (зеленый еще тогда был). Все хорошо, все работает, все открывает как надо. Дали задание переделать некоторые формулы, усложнить кое что и т.д. - работа сделана.
Решил изучить FastReport.
Добавил в свой проект по зарплате еще выбор отчета FastReport. Все отлично все как надо. Построил отчеты и т.д.
НО... вот один отчет, который с условиями вывода формул - не знаю как бы его проще и доступнее сделать.
Суть задачи: Есть премия начисления за сверхважность и не сверхважность, все это храниться в одной таблице (вывод отчета)

Для просмотра ссылки Войди или Зарегистрируйся

В вывод отчета попадает условие Sverh = True или Sverh = False

TbKatMgr.First;
while not TbKatMgr.Eof do
begin
if TbKatMgr['sverh']=true then
begin
writeln(f, '<tr bgcolor=#FFCCCC align=center><td align=center>+'+IntToStr(i)+'<td align=left>&nbsp;&nbsp;&nbsp;'+TbKatMgr['name']+'<td align=right>'+FloatToStr(TbKatMgr['plan'])+'&nbsp;&nbsp;&nbsp;<td align=right>'+FloatToStr(TbKatMgr['prod'])+'&nbsp;&nbsp;&nbsp;<td align=center>'+FloatToStr(TbKatMgr['ProcVKM'])+'%</td>');
writeln(f, '<td>'+IntToStr(TbKatMgr['NDirS'])+'ð.</td><td>'+IntToStr(TbKatMgr['NTovS'])+'ð.</td><td>'+IntToStr(TbKatMgr['PDirS'])+'ð.</td><td>'+IntToStr(TbKatMgr['PTovS'])+'ð.</td>');
ndirit:=ndirit+TbKatMgr['NDirS'];
pdirit:=pdirit+TbKatMgr['PDirS'];
ntovit:=ntovit+TbKatMgr['NTovS'];
ptovit:=ptovit+TbKatMgr['PTovS'];
end else if TbKatMgr['sverh']=false then
begin
writeln(f, '<tr align=center><td bgcolor=#eeeeee align=center>'+IntToStr(i)+'<td align=left>&nbsp;&nbsp;&nbsp;'+TbKatMgr['name']+'<td align=right>'+FloatToStr(TbKatMgr['plan'])+'&nbsp;&nbsp;&nbsp;<td align=right>'+FloatToStr(TbKatMgr['prod'])+'&nbsp;&nbsp;&nbsp;<td align=center>'+FloatToStr(TbKatMgr['ProcVKM'])+'%</td>');
writeln(f, '<td>'+IntToStr(TbKatMgr['NDir'])+'ð.</td><td>'+IntToStr(TbKatMgr['NTov'])+'ð.</td><td>'+IntToStr(TbKatMgr['PDir'])+'ð.</td><td>'+IntToStr(TbKatMgr['PTov'])+'ð.</td>');
ndirit:=ndirit+TbKatMgr['NDir'];
pdirit:=pdirit+TbKatMgr['PDir'];
ntovit:=ntovit+TbKatMgr['NTov'];
ptovit:=ptovit+TbKatMgr['PTov'];
end;
i:=i+1;
TbKatMgr.Next;
end;

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

Добавлено через 4 минуты
Для просмотра ссылки Войди или Зарегистрируйся

и что то такое должно получится при выводе в FastReport
 
Последнее редактирование модератором:

on-lite

Местный
Регистрация
7 Окт 2015
Сообщения
32
Реакции
30
Credits
54
Разобрался.

Решение: выбрал нужный компонент, где отображаются цифра (Memo9)
и в обработчике событий OnBeforePrint прописал следующее
if <frxDBDataset3."Sverh"> = true then
begin
Memo9.DataField:='NDirS';
end else
Memo9.DataField:='NDir';

так для каждого компонента где должны быть цифры пропишу такой обработчик.
Может кому еще пригодится.
Вообще подставлять можно любые данные из базы данных по событию с условиями.
 

sergiodd

Турист
Регистрация
1 Дек 2015
Сообщения
2
Реакции
0
Credits
4
fast script

вообще позволяет писать на pascal или c

пишешь свой обработчик свои формулы и потом уже можешь вставлять их в элементы в отчете:D
 

MikaelBox

Турист
Регистрация
25 Ноя 2015
Сообщения
5
Реакции
0
Credits
10
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport. Приведенный выше пример крайне тривиален и легко реализуется с помощью фаста.
Если описать на пальцах, то на вход идет набор(ы) данных, можно в "сыром" виде, т.к. все суммы и итоги можно подбить с помощью отчета. Создается заголовок, тело данных выводится с помощью MasterData, а итоги подводятся с помощью финальных бендов.
 

newbotanik

Турист
Регистрация
29 Сен 2015
Сообщения
6
Реакции
0
Credits
12
есть ли возможность подобные отчеты выводить в FastReport используя FastScript например? Я с этим никогда не сталкивался, кто либо делал подобное?
Да, это одна из главных фишек фастрепорта. У многих в проэкт встраиваеься дизайнер, запросы и сами отчеты хрянятся в базе. Генерируются на лету. Это дает возможность их не зашивать в код и править в случае надобности. Плюс можно их добавлять, создавать кастомные отчеты...
 

Zubrb

Турист
Регистрация
30 Май 2016
Сообщения
6
Реакции
0
Credits
12
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport.

Присоединюсь к ответу, репорт умеет обрабатывать все сырые данные, по сути вы даете отчету данные и описываете все условия его вывода включаю логику сортировки.
 

kouvaev

Местный
Регистрация
23 Мар 2009
Сообщения
28
Реакции
4
Credits
55
Да, это одна из главных фишек фастрепорта. У многих в проэкт встраиваеься дизайнер, запросы и сами отчеты хрянятся в базе...

Не отчеты, а шаблоны отчетов хранятся в базе :)
 

ashensugar

Турист
Регистрация
28 Июл 2011
Сообщения
9
Реакции
0
Credits
16
FastReport любимый дизайнер отчетов, но лично мое мнение данные желательно готовить для вывода на печать заранее, по возможности используя весь функционал sql
 

_user_

Турист
Регистрация
16 Янв 2013
Сообщения
7
Реакции
0
Credits
14
Да, отчет лучше не перегружать логикой, а заранее подготавливать данные, а в самом отчете использовать условия для различных подсветок и красот...
 

Wild_RNB

Турист
Регистрация
19 Окт 2016
Сообщения
1
Реакции
0
Credits
2
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?
 

Rabbano

Турист
Регистрация
22 Июн 2009
Сообщения
11
Реакции
0
Credits
28
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек
 

er_long76

Турист
Регистрация
11 Ноя 2015
Сообщения
9
Реакции
0
Credits
12
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?

Задайте в скрипте переменную (счетчик) и при выводе строки таблицы увеличивайте на 1. по достижении 10 - NewPage и счетчик в 0
 

overturn

Турист
Регистрация
22 Окт 2014
Сообщения
12
Реакции
0
Credits
12
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.
 

Ivanov-m2

Турист
Регистрация
22 Янв 2006
Сообщения
23
Реакции
1
Credits
42
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.

Там есть свойство SuppresRepeated