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

on-lite

Member
Joined
Oct 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
Oct 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
Dec 1, 2015
Messages
2
Reaction score
0
fast script

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

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

MikaelBox

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

newbotanik

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

Zubrb

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

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

kouvaev

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

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

ashensugar

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

_user_

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

Wild_RNB

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

Rabbano

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

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
лучше задать фиксированный размер листа и рассчитать высоту строки для 10 строчек

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

er_long76

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

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

overturn

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

Ivanov-m2

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

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

overturn

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

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

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

Ivanov-m2

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

antonio2004

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