Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
Доброго времени суток! И с праздником!
Собственно вопрос простой: можно ли заставить FR переносить заголовки с данными на следующую страницу, если имеются вертикальные бэнды?
На странице: 2 "обычных" горизонтальных GroupHeaderов, 2 вертикальных GroupHeaderов. Ну, и соответственно, 2 MasterDatы.
Задача состоит в том, чтобы печатать каждый из GroupHeaderов с его MasterDatой на отдельной странице.
Решения почему-то, ни в нете, ни в документации не нашлось.
13 сен 18, 12:23    [21673359]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
Вот картинка, если не совсем понятно по тексту...

Причем, если MasterData достаточно длинная (т.е в запросе несколько/много записей), то сам FR без труда переносит заголовки с содержимым как надо сам. НО....количество строк в запросе, разумеется, не фиксированное... Да и страница по-хорошему должна быть бесконечной ширины.

Есть идеи? Впервые работаю с вертикальными бэндами. Мож, что-то не так делаю?


Картинка с другого сайта.

К сообщению приложен файл. Размер - 138Kb
13 сен 18, 15:09    [21673698]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
DimaBr
Member

Откуда:
Сообщений: 10664
Вертикальные бэнды это анахронизм, доставшийся со времён безскриптового движка.
Проще динамически создать нужно количество колонок.
13 сен 18, 15:13    [21673701]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
DimaBr
Проще динамически создать нужно количество колонок.

Бе...создавать динамически (без обид). Мне не проще, честно говоря. У меня масса форм (включая и те, что с crosstabaми), где заранее неизвестна длина таблицы ни вниз, ни вправо. Писать для каждой из них динамическое построение как-то не хочется. + Тогда уж проще обойтись без FR, создавая отчет на том же Excel....
13 сен 18, 15:18    [21673716]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
Да и, чего уж там,...я и подумать не могла, что возникнет эта проблема (ибо с "обычным" горизонтальным расположение тех же бэндов таких проблем никогда не наблюдалось)
13 сен 18, 15:20    [21673728]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
DimaBr
Member

Откуда:
Сообщений: 10664
Поверьте, проще создать динамически, там кода то на 5-10 строчек
13 сен 18, 15:58    [21673817]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
DimaBr
Member

Откуда:
Сообщений: 10664
СrossТabы такое же зло как и Вертикальные Бэнды.
Отчёт должен красиво печатать готовые данные, а не создавать их из имеющихся.
13 сен 18, 16:02    [21673822]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
DimaBr,
Не буду с Вами спорить, хотя бы потому что глубоко уважаю Ваше мнение и опыт. Но мне по-прежнему не ясно, зачем вообще нужны данные бэнды, или зачем они наследуют св-во "StartNewPage"... И почему FR беспроблемно переносит те части данных, которые необходимо, самостоятельно, когда место на странице заканчивается...

В любом случае, спасибо за помощь ))
13 сен 18, 16:25    [21673858]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59008
DimaBr> СrossТabы такое же зло как и Вертикальные Бэнды.

Так точно.

Кода для "вручную" там не 5 строчек, конечно, но таки лучше самому.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 18:52    [21674118]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6224
DimaBr
СrossТabы такое же зло как и Вертикальные Бэнды

Гаджимурадов Рустам
Так точно

Не всё так однозначно

Мне кажется, что многие решения, принятые при проектировании FastReport'а (как то типы бэндов, свойства, провайдеры баз данных или как они там назывались, скриптовый движок), были приняты с оглядкой на киллер-фичу фаста: возможность дизайнить отчеты конечным пользователем
13 сен 18, 20:42    [21674186]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59008
Едва ли много конечных пользователей смогут забацать СrossТab :)

Posted via ActualForum NNTP Server 1.5

13 сен 18, 21:11    [21674201]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59008
Справедливости ради, забацать нормальный СrossТab в общем
случае в принципе нетривиальная задача, даже для программиста.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 21:12    [21674202]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
_Den_Z
Guest
Гаджимурадов Рустам,
Пользователи могут делать через связку с FastCube ;)


OlyaLora ,
У вертикальных бэндов StartNewPage не обрабатывается, т.к. они не развиваются (сейчас весь упор делается на таблицу).
NewPage вызывать тоже бесполезно, т.к. вывод вертикальных отличается от обычного вывода.

Но можно воспользоваться скриптом, и менять Engine.PageWidth.
Что-то вроде :
var
  nWidth, PageW: Extended;

procedure BandOnAfterPrint(Sender: TfrxComponent);
begin                   
 if Sender is TfrxGroupHeader then
 begin
   Engine.PageWidth := PageW;
   nWidth := 0;
 end;
 nWidth := nWidth + TfrxBand(Sender).Width;
 if Sender is TfrxGroupFooter then
   Engine.PageWidth := nWidth;
end;

procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
 PageW := Engine.PageWidth;
end;
  
procedure Page1OnAfterPrint(Sender: TfrxComponent);
begin
  Engine.PageWidth := PageW;
end;


Событие BandOnAfterPrint связывается с всеми вертикальными бэндами.
Накапливаем ширину, в вертикальном подвале устанавливаем PageWidth равным этой ширине. При печати заголовка сбрасываем, и повторяем заново.

Или подождать нового билда, функционал StartNewPage для вертикальных добавляется одной строчкой, в следующем билде добавлю ее обработку.
13 сен 18, 21:33    [21674209]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59008
А вот и начальник транспортного цеха.

_Den_Z> Пользователи могут делать через связку с FastCube ;)

Боюсь, этого большинство тоже не осилит.
Вообще, нелегкое это дело - ваять end-user
отчеты самим пользователям и тем паче дать
удобный инструмент для этого. У тех же 1С
он тоже далек от идеала.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 21:42    [21674212]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
DimaBr
Member

Откуда:
Сообщений: 10664
Если хочешь сделать что-то хорошо, сделай это сам. (Фердинанд ПОРШЕ)
13 сен 18, 21:52    [21674220]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59008
Отож. Но у меня такая задача пока не стояла, вроде, а ради
спортивного интереса я за такую сложную задачу не возьмусь.
А формировать отчеты в МСО по шаблонам - это несложно.

Posted via ActualForum NNTP Server 1.5

13 сен 18, 21:55    [21674225]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Gator
Member

Откуда: Москва
Сообщений: 13866
Гаджимурадов Рустам
Едва ли много конечных пользователей смогут забацать СrossТab :)

Ну... желание у заказчиков бывает.
И решения есть и компоненты кубов, и в Экселе... (даже у "девок" красивый Pivot). Другое дело, что сотрудники не пользуют их по разным причинам ( неудобно, нахненадь, время... их спросить ещё? ).
НО
imho Заказчик имеет [сеть] OLTP, но не имеет средств на OLAP
____________
когда тописал здесь или в соседнем форуме
13 сен 18, 23:02    [21674275]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
Bali
Member

Откуда:
Сообщений: 50
Нормальный кросстаб в Фастрепорте, если его "немного" допилить.
У меня основная масса отчетов на кросcтабах сделаны.
Динамически формируемый SQL запрос + CrossTab - самое то. Пользователи на одном шаблоне не один десяток отчетов могут сформировать, только выбирая что с чем группировать, в какой последовательности выводить, и где итоги нужны.
13 сен 18, 23:24    [21674280]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
DimaBr
Member

Откуда:
Сообщений: 10664
Bali
Нормальный кросстаб в Фастрепорте, если его "немного" допилить.

Допилите, пожалуйста, чтобы прятались колонки, сортировались, перемещались и фильтровались, чтобы заголовки были Custom и итоги по условию
13 сен 18, 23:29    [21674281]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
чччД__
Guest
DimaBr
СrossТabы такое же зло как и Вертикальные Бэнды.
Отчёт должен красиво печатать готовые данные, а не создавать их из имеющихся.

Я как-то довольно долго боролся с ними (кросс), и даже добился нужного результата, но в итоге все чаще стал использовать событие OnManualBuild...
14 сен 18, 08:29    [21674336]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
_Den_Z,
Рада Вас слышать в наших рядах! :))
_Den_Z
У вертикальных бэндов StartNewPage не обрабатывается, т.к. они не развиваются (сейчас весь упор делается на таблицу).
NewPage вызывать тоже бесполезно, т.к. вывод вертикальных отличается от обычного вывода.
Эт я уже поняла....
_Den_Z
Или подождать нового билда, функционал StartNewPage для вертикальных добавляется одной строчкой, в следующем билде добавлю ее обработку.

Ну, и самый главный тривиальный вопрос: "Когда?" )))
+
(мне не то, чтобы сильно горит, но хотелось бы знать: делать по вышеописанной схеме или потерпеть)

ps Я так понимаю, в 6 версии этот функционал останется? (пару проектов уже переведены, до текущего еще не дошла). Опять же, как я понимаю, необходимый в данном случае функционал реализовывается в 6ке с помощью объекта "таблица"?



Гаджимурадов Рустам
Боюсь, этого большинство тоже не осилит.

Хотите верьте, хотите - нет. У меня такие есть пользователи. Да, их по пальцам перечесть, но есть же...



Гаджимурадов Рустам
DimaBr> СrossТabы такое же зло как и Вертикальные Бэнды.

Так точно.

Кода для "вручную" там не 5 строчек, конечно, но таки лучше самому.


Я согласна с Вами обоими, что штуки эти очень и очень негибкие. НО! Зачем же ж тогда вообще нужны такие объекты, если не использовать их по прямому назначению, хотя бы для несложных построений без оглядки на то
DimaBr
, чтобы прятались колонки, сортировались, перемещались и фильтровались, чтобы заголовки были Custom и итоги по условию

А уже для более сложных решений использовать скрипты/excel и т п и т д...
Может, конечно, я и не права....Но справедливости ради, отмечу, что до сих пор практически все задачи удавалось решать при помощи стандартных методов, лишь только изредка прибегая к "изощрениям" под условие.
14 сен 18, 09:23    [21674364]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
_Den_Z
Guest
OlyaLora
Ну, и самый главный тривиальный вопрос: "Когда?" )))

Билд 5ки уже обновился.
Для FR6 будет позже, т.к. там еще ряд изменений будет. Приблизительно в середине этой недели.

OlyaLora
Опять же, как я понимаю, необходимый в данном случае функционал реализовывается в 6ке с помощью объекта "таблица"?

Да, но сейчас пока только через скрипт.
В 6.3 планируется упрощение работы с таблицей. Поэтому для перехода советую дождаться этого обновления.
17 сен 18, 18:11    [21677253]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
_Den_Z
Билд 5ки уже обновился.

Если имеется в виду 6.18 билд, то еще на выходных пробовала, но что-то пошло не так....

Полагаю, что я некорректно работаю с вертикальными бэндами в принципе. Я вложила тестовый пример на базе из Demos (Таблица Sales). Предполагается, что отчет должен выводить на каждой отдельной странице информацию о каждом из заказов (печатая их не "вниз", а "вправо"), повторяя при этом на каждой из страниц заголовок (т е весь GroupHeader1 целиком). Т е должно получится что-то вроде листовки по каждому из заказов. Но заголовки в приложенном отчете не повторяются на каждой странице + у бэнда GroupHeader3 свойство StartNewPage будто бы игнорируется вообще.

_Den_Z
В 6.3 планируется упрощение работы с таблицей. Поэтому для перехода советую дождаться этого обновления.

Разумеется, подожду.
Спасибо )))

К сообщению приложен файл (3.fr3 - 9Kb) cкачать
18 сен 18, 10:57    [21677775]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
OlyaLora
Member

Откуда:
Сообщений: 101
OlyaLora
Я вложила тестовый пример на базе из Demos (Таблица Sales).

Эммм.....неудачный пример?....Или может не совсем понятно объяснила поставленную цель?
сегодня, 09:46    [21683562]     Ответить | Цитировать Сообщить модератору
 Re: FastReport. Вертикальные бэнды  [new]
_Den_Z
Guest
OlyaLora,

GroupHeader1 не будет перепечатываться, его объекты не лежат четко на пересечении вертикальных горизонтальных бэндов, поэтому расти в ширину он не будет (а будет напечатан как обычный бэнд). Для печати этого заголовка над всеми объектами которые переносятся при расти в ширину, должны быть соответствующие объекты строго на пересечении с вертикальными бэндами.
сегодня, 12:28    [21683795]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить