Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport - помогите сформировать итоги / 12 сообщений из 12, страница 1 из 1
25.11.2021, 07:24
    #40114732
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
Итоговое количество судов не должно совпадать с суммой в строках, потому что в строках идет группировка по типу груза, а на одном судне может быть 3 груза, так что, например, по сумме в строках получится 17, а на самом деле 15 судов.
Следовательно, итожки формируются другим запросом, без группировки по количеству грузов.
Нужно, чтобы после таблицы каждого района выводилась итожка по этому району.
Но в GroupHeader указана [DS0."cargo_zone_id"] - это первый желтый бэнд. А сумма выводится во втором бэнде DS1.
Поэтому все итожки получаются в самом низу отчета. Как сделать, чтобы каждая итожка шла после своего района?
...
Рейтинг: 0 / 0
25.11.2021, 07:24
    #40114733
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
Форма
...
Рейтинг: 0 / 0
25.11.2021, 10:49
    #40114770
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
GroupFooter после MasterData1 и на него Итого
...
Рейтинг: 0 / 0
25.11.2021, 10:57
    #40114774
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
DimaBr
GroupFooter после MasterData1 и на него Итого

А GroupFooter же управляется условием, прописанным в GroupHeader, а там ссылка на DS0. Как этот параметр передать в DS1?
Пробовал, в результате после каждого района выводится сумма по 1-му району.
...
Рейтинг: 0 / 0
25.11.2021, 11:07
    #40114775
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
Как этот параметр передать в DS1?
В момент печати GroupFooter датасет стоит на последней строчке группы. Вот с датасета (DS0) данные и берите
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate
...
Рейтинг: 0 / 0
25.11.2021, 11:23
    #40114782
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
DimaBr
В момент печати GroupFooter датасет стоит на последней строчке группы. Вот с датасета (DS0) данные и берите
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate

На DataSource.OnDataChange первого запроса повесил вызов второго запроса, где вычисляется сумма. Теперь на каждую строку первого запроса вызывается второй запрос, долго.
...
Рейтинг: 0 / 0
25.11.2021, 11:25
    #40114784
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
DimaBr
>
Если DS1 уже готовый и колонка DS0 уникальна, то достаточно будет просто спозиционировать DS1 методом Locate

В какой момент это делать-то? Там все определяет сама форма frxReport. Как в этот процесс вклиниться? Кроме события DataSource.OnDataChange.
...
Рейтинг: 0 / 0
25.11.2021, 11:40
    #40114793
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
svnvlad

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

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

Код: pascal
1.
2.
3.
4.
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  DS1.Lacate('ПолеГруппыDS0', <DS0."ПолеГруппыDS0">,0);
end;
...
Рейтинг: 0 / 0
25.11.2021, 12:41
    #40114821
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
DimaBr
svnvlad

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

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

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


Код: pascal
1.
2.
3.
4.
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  DS1.Locate('cargo_zone_id', <DS0."cargo_zone_id">, 0);  
end;


Ругается на inentifier DS1.
...
Рейтинг: 0 / 0
25.11.2021, 13:15
    #40114835
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
Ну у вас же DS1 есть. Может стоит ему UserName прописать ?
...
Рейтинг: 0 / 0
25.11.2021, 13:16
    #40114836
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
Вот так попробовал
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
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'
...
Рейтинг: 0 / 0
25.11.2021, 13:17
    #40114837
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - помогите сформировать итоги
DimaBr
Ну у вас же DS1 есть. Может стоит ему UserName прописать ?

Так это и есть UserName
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport - помогите сформировать итоги / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]