Отчет в FastReport и условия | BESK.SU - программирование без границ (c) 2025

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

on-lite

Турист
Credits
0
Доброе время суток, уважаемые!
Есть старый проект по зарплате, писан еще в 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

Турист
Credits
0
Разобрался.

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

sergiodd

Турист
Credits
0
fast script

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

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

MikaelBox

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

newbotanik

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

Zubrb

Турист
Credits
0
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport.
Присоединюсь к ответу, репорт умеет обрабатывать все сырые данные, по сути вы даете отчету данные и описываете все условия его вывода включаю логику сортировки.
 

ashensugar

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

_user_

Турист
Credits
0
Да, отчет лучше не перегружать логикой, а заранее подготавливать данные, а в самом отчете использовать условия для различных подсветок и красот...
 

Wild_RNB

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

Rabbano

Турист
Credits
0
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек
 

er_long76

Турист
Credits
0
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?
Задайте в скрипте переменную (счетчик) и при выводе строки таблицы увеличивайте на 1. по достижении 10 - NewPage и счетчик в 0
 

overturn

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

Ivanov-m2

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