Наши преимущества

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

on-lite

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

Как увидеть ссылки? | How to see hidden links?

В вывод отчета попадает условие 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 минуты
Как увидеть ссылки? | How to see hidden links?

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

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

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

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

пишешь свой обработчик свои формулы и потом уже можешь вставлять их в элементы в отчете:D
 
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport. Приведенный выше пример крайне тривиален и легко реализуется с помощью фаста.
Если описать на пальцах, то на вход идет набор(ы) данных, можно в "сыром" виде, т.к. все суммы и итоги можно подбить с помощью отчета. Создается заголовок, тело данных выводится с помощью MasterData, а итоги подводятся с помощью финальных бендов.
 
есть ли возможность подобные отчеты выводить в FastReport используя FastScript например? Я с этим никогда не сталкивался, кто либо делал подобное?
Да, это одна из главных фишек фастрепорта. У многих в проэкт встраиваеься дизайнер, запросы и сами отчеты хрянятся в базе. Генерируются на лету. Это дает возможность их не зашивать в код и править в случае надобности. Плюс можно их добавлять, создавать кастомные отчеты...
 
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport.

Присоединюсь к ответу, репорт умеет обрабатывать все сырые данные, по сути вы даете отчету данные и описываете все условия его вывода включаю логику сортировки.
 
FastReport любимый дизайнер отчетов, но лично мое мнение данные желательно готовить для вывода на печать заранее, по возможности используя весь функционал sql
 
Да, отчет лучше не перегружать логикой, а заранее подготавливать данные, а в самом отчете использовать условия для различных подсветок и красот...
 
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?
 
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек
 
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?

Задайте в скрипте переменную (счетчик) и при выводе строки таблицы увеличивайте на 1. по достижении 10 - NewPage и счетчик в 0
 
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.
 
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.

Там есть свойство SuppresRepeated
 
Верх