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

on-lite

Member
Joined
month_10_short 7, 2015
Messages
32
Reaction score
30
Доброе время суток, уважаемые!
Есть старый проект по зарплате, писан еще в 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
 
Last edited by a moderator:

on-lite

Member
Joined
month_10_short 7, 2015
Messages
32
Reaction score
30
Разобрался.

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

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

sergiodd

New member
Joined
month_12_short 1, 2015
Messages
2
Reaction score
0
fast script

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

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

MikaelBox

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

newbotanik

Member
Joined
month_9_short 29, 2015
Messages
6
Reaction score
0
есть ли возможность подобные отчеты выводить в FastReport используя FastScript например? Я с этим никогда не сталкивался, кто либо делал подобное?
Да, это одна из главных фишек фастрепорта. У многих в проэкт встраиваеься дизайнер, запросы и сами отчеты хрянятся в базе. Генерируются на лету. Это дает возможность их не зашивать в код и править в случае надобности. Плюс можно их добавлять, создавать кастомные отчеты...
 

Zubrb

Member
Joined
month_5_short 30, 2016
Messages
6
Reaction score
0
у FastReport есть замечательная CHM-ка "Руководство разработчика", там кратко расписаны все примеры работы с FastReport.

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

kouvaev

Member
Joined
month_3_short 23, 2009
Messages
26
Reaction score
1
Да, это одна из главных фишек фастрепорта. У многих в проэкт встраиваеься дизайнер, запросы и сами отчеты хрянятся в базе...

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

ashensugar

Member
Joined
month_7_short 28, 2011
Messages
9
Reaction score
0
FastReport любимый дизайнер отчетов, но лично мое мнение данные желательно готовить для вывода на печать заранее, по возможности используя весь функционал sql
 

_user_

Member
Joined
month_1_short 16, 2013
Messages
7
Reaction score
0
Да, отчет лучше не перегружать логикой, а заранее подготавливать данные, а в самом отчете использовать условия для различных подсветок и красот...
 

Wild_RNB

New member
Joined
month_10_short 19, 2016
Messages
1
Reaction score
0
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?
 

Rabbano

Member
Joined
month_6_short 22, 2009
Messages
12
Reaction score
0
Age
46
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек
 

LeshaRB

Premium Member
VIP
Joined
month_6_short 11, 2022
Messages
322
Reaction score
451
Location
Canada
Deposit
$ 150
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек

А остальное место будет пустым?
 

er_long76

Member
Joined
month_11_short 11, 2015
Messages
9
Reaction score
0
Здравствуйте!
Возможно ли как нибудь сделать ограничение вывода количества строк таблицы на страницу?
Есть таблица которая формируется из БД, с ней проблем нет, а вот отчет на котором она формируется, должен иметь таблицу из 10 строк. Как сделать так, что бы таблица формировалась по 10 строк, остальные на новом листе?

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

overturn

Member
Joined
month_10_short 22, 2014
Messages
12
Reaction score
0
Location
Солигорск
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.
 

Ivanov-m2

Member
Joined
month_1_short 22, 2006
Messages
23
Reaction score
1
Location
Москва
Может быть кто-нибудь сталкивался...
Переводим отчёты с ORACLE-reports на FastReport. Столкнулись с проблемой вертикального растягивания поля Memo на несколько записей.
Например, есть три строки с одинаковым кодом клиента в первом столбце. Нужно в первом столбце сделать одно поле с кодом клиента, растянутое на все три строки.
Кто как решал такую проблему, поделитесь опытом, плз.

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

overturn

Member
Joined
month_10_short 22, 2014
Messages
12
Reaction score
0
Location
Солигорск
Там есть свойство SuppresRepeated

Это свойство скрывает повторяющиеся значения этого поля в последующих строках.
Но нужно, чтобы визуально было, к примеру, не три строчки (первая со значением, остальные - без), а чтобы поле первой строки растянулось на вторую и третью строки.
 
Joined
month_8_short 23, 2012
Messages
112
Reaction score
106
Age
49
Location
РФ, Москва
Это свойство скрывает повторяющиеся значения этого поля в последующих строках.
Но нужно, чтобы визуально было, к примеру, не три строчки (первая со значением, остальные - без), а чтобы поле первой строки растянулось на вторую и третью строки.

Сделать обработку отчёта в 2 прохода, и во втором поиграться с границами ячеек и их содержимым?
 

Ivanov-m2

Member
Joined
month_1_short 22, 2006
Messages
23
Reaction score
1
Location
Москва
Это свойство скрывает повторяющиеся значения этого поля в последующих строках.
Но нужно, чтобы визуально было, к примеру, не три строчки (первая со значением, остальные - без), а чтобы поле первой строки растянулось на вторую и третью строки.
У меня именно так и работает. К сожалению, это у меня старый проект и я не могу точно сказать в чем дело. Возможно, нужно установить StretchMode в smMaxHeight.
И все у меня делается за один проход:)
Если совсем не получится - напишите - попробую восстановить проект и разобраться...
 
Last edited by a moderator:

antonio2004

New member
Joined
month_9_short 19, 2007
Messages
1
Reaction score
0
а если этот блок повторяющихся значений переходит на другую страницу отчёта - тогда как происходит?
 
Top