FastReport - Как суммировать определенные значения нижнего колонтитула группы в новый нижний колонтитул - PullRequest
5 голосов
/ 06 сентября 2010

Я пытаюсь сделать следующее с fastreport и delphi. У меня есть отчет, содержащий ...

GroupHeader -------> Ключ к продавцу клиента MasterData -------> CustomerName, Balance GroupFooter -------> Сумма (Баланс) Продавца-1 MasterData -------> CustomerName, Balance GroupFooter -------> Сумма (Баланс) Продавца-2 MasterData -------> CustomerName, Balance GroupFooter -------> Сумма (Баланс) Продавца-3 , , , MasterData -------> CustomerName, Balance GroupFooter -------> Сумма (Баланс) Продавца-N

====> Здесь хочется иметь: Нижний колонтитул-2 -------> СУММА (сумма (баланс) продавца-1, сумма (баланс) продавца-2, сумма (баланс) продавца-3) (ТОЛЬКО !!!)

ReportFooter --------> Общий баланс клиента.

У кого-нибудь есть идея решить проблему с движком скриптов fastreport?

Спасибо.

1 Ответ

2 голосов
/ 07 сентября 2010

Я бы создал глобальную переменную отчета 'salessum'

var
  salessum: extended;

procedure MYReportOnStartReport(Sender: TfrxComponent);
begin
  salessum := 0.0;
end;

В событии OnBeforePrint полосы подробностей увеличьте salessum, если он является одним из желаемых продавцов.

procedure MYReportDetailBeforePrint(Sender: TfrxComponent);
begin
  if (mydata.salesmankey = "key 1") or (mydata.salesmankey = "key2") or (...) then
  begin
    salessum := salessum + mydata.amount;
  end;
end;

Если вы хотите получить дополнительную сумму в конце отчета, добавьте итоговую полосу отчета и в событии OnBeforePrint задайте значение соответствующего текстового поля для форматированной строки salessum.

procedure MYReportSummaryBeforePrint(Sender: TfrxComponent);
begin
  txtMyBestSalesMenTotal.Text := FormatFloat('#,##0.00', salessum);
end;

В качестве альтернативы,если вы хотите получить дополнительную сумму сразу после промежуточной суммы продавца 3, добавьте текстовое поле в нижний колонтитул группы продавца и в событии OnBeforePrint установите для его свойства visible значение true / false в зависимости от того, какой ключ продавца вы обрабатываете в настоящее время, и установите его значение вценность салессума.Вам также нужно будет убедиться, что полоса растягивается автоматически.

Я начал делать почти все суммирование, используя переменную script и report, так как становится намного легче контролировать, когда и где их следует увеличивать или сбрасывать.или распечатаны и т. д. Использование встроенных функций сумм (в любой системе отчетности) полезно только для очень простых итогов, что по некоторым причинам очень мало из моих отчетов.

Надеюсь, что имеет смысл (ичего вы на самом деле пытаетесь достичь!).

...