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

Откуда:
Сообщений: 2356
Итоговое количество судов не должно совпадать с суммой в строках, потому что в строках идет группировка по типу груза, а на одном судне может быть 3 груза, так что, например, по сумме в строках получится 17, а на самом деле 15 судов.
Следовательно, итожки формируются другим запросом, без группировки по количеству грузов.
Нужно, чтобы после таблицы каждого района выводилась итожка по этому району.
Но в GroupHeader указана [DS0."cargo_zone_id"] - это первый желтый бэнд. А сумма выводится во втором бэнде DS1.
Поэтому все итожки получаются в самом низу отчета. Как сделать, чтобы каждая итожка шла после своего района?

К сообщению приложен файл. Размер - 30Kb


Сообщение было отредактировано: 25 ноя 21, 11:32
25 ноя 21, 07:24    [22400472]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
Форма

К сообщению приложен файл. Размер - 131Kb
25 ноя 21, 07:24    [22400473]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
DimaBr
Member

Откуда:
Сообщений: 12190
GroupFooter после MasterData1 и на него Итого
25 ноя 21, 10:49    [22400556]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
DimaBr
GroupFooter после MasterData1 и на него Итого

А GroupFooter же управляется условием, прописанным в GroupHeader, а там ссылка на DS0. Как этот параметр передать в DS1?
Пробовал, в результате после каждого района выводится сумма по 1-му району.

Сообщение было отредактировано: 25 ноя 21, 11:01
25 ноя 21, 10:57    [22400563]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
DimaBr
Member

Откуда:
Сообщений: 12190
Как этот параметр передать в DS1?

В момент печати GroupFooter датасет стоит на последней строчке группы. Вот с датасета (DS0) данные и берите
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate

Сообщение было отредактировано: 25 ноя 21, 11:32
25 ноя 21, 11:07    [22400567]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
DimaBr
В момент печати GroupFooter датасет стоит на последней строчке группы. Вот с датасета (DS0) данные и берите
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate

На DataSource.OnDataChange первого запроса повесил вызов второго запроса, где вычисляется сумма. Теперь на каждую строку первого запроса вызывается второй запрос, долго.

Сообщение было отредактировано: 25 ноя 21, 11:33
25 ноя 21, 11:23    [22400580]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итожки  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
DimaBr
>
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate

В какой момент это делать-то? Там все определяет сама форма frxReport. Как в этот процесс вклиниться? Кроме события DataSource.OnDataChange.
25 ноя 21, 11:25    [22400582]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итоги  [new]
DimaBr
Member

Откуда:
Сообщений: 12190
svnvlad

В какой момент это делать-то? Там все определяет сама форма frxReport. Как в этот процесс вклиниться? Кроме события DataSource.OnDataChange.

Я же написал "В момент печати GroupFooter датасет стоит на последней строчке группы".
Вот в момент печати GroupFooterю.OnBeforePrint и делаете всё что вам нужно в скрипте отчёта.
Повесить мемку в которой напишите вызов функции.
А в функции вычисляйте что вам вздумается.
Конкретно в вашем случае (если valuees_count - это готовые суммы по каждой группе) можно написать в мемке [DS1."valuees_count"], а в GroupFooter.OnBeforePrint спозиционировать на нужную строку DS1

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  DS1.Lacate('ПолеГруппыDS0', <DS0."ПолеГруппыDS0">,0);
end;


Сообщение было отредактировано: 25 ноя 21, 11:42
25 ноя 21, 11:40    [22400595]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итоги  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
DimaBr
svnvlad

В какой момент это делать-то? Там все определяет сама форма frxReport. Как в этот процесс вклиниться? Кроме события DataSource.OnDataChange.

Я же написал "В момент печати GroupFooter датасет стоит на последней строчке группы".
Вот в момент печати GroupFooterю.OnBeforePrint и делаете всё что вам нужно в скрипте отчёта.
Повесить мемку в которой напишите вызов функции.
А в функции вычисляйте что вам вздумается.
Конкретно в вашем случае (если valuees_count - это готовые суммы по каждой группе) можно написать в мемке [DS1."valuees_count"], а в GroupFooter.OnBeforePrint спозиционировать на нужную строку DS1

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  DS1.Lacate('ПолеГруппыDS0', <DS0."ПолеГруппыDS0">,0);
end;

procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  DS1.Locate('cargo_zone_id', <DS0."cargo_zone_id">, 0);  
end;

Ругается на inentifier DS1.
25 ноя 21, 12:41    [22400639]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итоги  [new]
DimaBr
Member

Откуда:
Сообщений: 12190
Ну у вас же DS1 есть. Может стоит ему UserName прописать ?
25 ноя 21, 13:15    [22400666]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итоги  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
Вот так попробовал
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
var
  DS: TfrxDataSet;                                       
begin
  DS := MasterData2.DataSet;                                                            
  DS.First;
  DS.Locate('cargo_zone_id', <DS0."cargo_zone_id">, 0);
end;

DS.First работает, а Locate - Undeclared identifier 'Locate'
25 ноя 21, 13:16    [22400667]     Ответить | Цитировать Сообщить модератору
 Re: FastReport - помогите сформировать итоги  [new]
svnvlad
Member

Откуда:
Сообщений: 2356
DimaBr
Ну у вас же DS1 есть. Может стоит ему UserName прописать ?

Так это и есть UserName
25 ноя 21, 13:17    [22400668]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить