Beforeprint
Есть отчет
MasterData1 привязана к Dataset
в MasterData1 есть Мемо1 заполняемое по коду перед печатью
Так вот. При переходе на новую страницу Эта процедура выполняется ДВАЖДЫ т.к. SumAll больше на сумму первого числа на новой странице
ОТЧЁТ
FR 4.7.29 D6
По советуйте как быть.
ReportTitle
PageHeader
MasterData1
Footer
ReportSummary
PageFooter
MasterData1 привязана к Dataset
в MasterData1 есть Мемо1 заполняемое по коду перед печатью
procedure Memo1OnBeforePrint()
if (что то) then
begin
Memo1.Text = число
SumAll := SumAll + число
end
Так вот. При переходе на новую страницу Эта процедура выполняется ДВАЖДЫ т.к. SumAll больше на сумму первого числа на новой странице
ОТЧЁТ
1
2
3
-----новая страница
4
5
6
------Итог
25 (1+2+3+4+4+5+6)
FR 4.7.29 D6
По советуйте как быть.
Комментарии
var s: extended; //сама сумма
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
s:=s+StrToFloat(<Sales."Cost">); // приращение суммы на число, которое выводится в мемке
Memo7.Text:=FloatToStr(s); // вывод получившейся суммы в другую мемку для наглядности
end;
procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
s:=0; //инициализация
end;
begin
end.
Сумма считается корректно при переходе на новую страницу.
Прикрепил 2 файлика .JPG для наглядности.
используйте Engine.SecondScriptCall чтобы определить повторный вызов
if (что то) and (not Engine.SecondScriptCall) then
begin
Memo1.Text = число;
SumAll := SumAll + число;
end;