Conditional Calculation
I am calculating a sum on before print event of some band which is group
header band. Report manages the paging automatically obviously. Suppose a
group header is shifted to next page for setting up page contents the before
print event of the Group Header is executed twice!!!!!!!
I tested it using putting showmessage(GroupNameFieldvalue) on OnPrint event
of the GroupHeader...it actually shows message twice for the groups shifted
on second page automatically. First on the page when group was about to
print and second time when i click on next page button and group actually
shows in preview.
Problem happens is Grand total actually comes access; exactly the same as
the Grouptotals which are calculated for the shifted group headers. It is
compeletely unmanagible situation because i cant come to know when
reportbuilder will setup the page according to the printer setups !!!
header band. Report manages the paging automatically obviously. Suppose a
group header is shifted to next page for setting up page contents the before
print event of the Group Header is executed twice!!!!!!!
I tested it using putting showmessage(GroupNameFieldvalue) on OnPrint event
of the GroupHeader...it actually shows message twice for the groups shifted
on second page automatically. First on the page when group was about to
print and second time when i click on next page button and group actually
shows in preview.
Problem happens is Grand total actually comes access; exactly the same as
the Grouptotals which are calculated for the shifted group headers. It is
compeletely unmanagible situation because i cant come to know when
reportbuilder will setup the page according to the printer setups !!!
This discussion has been closed.
Comments
When making calculations, be sure to only use the OnCalc event of a
TppVariable. This is the only event that will fire once base on the timing
you define.
----------------------------------------------------------------------
TECH TIP: Performing Calculations
----------------------------------------------------------------------
Calculations can be done either on the data access side or within
ReportBuilder.
When designing reports there are always decisions to be made as to how much
processing to do on the data side versus the report side. Usually doing
more on one side can greatly simplify the other. So it is often a personal
choice based on the power and flexibility of the data and report tools being
used.
DataAccess
----------
a. Use SQL - using SQL you can perform many common calculations:
example: Select FirstName + ' ' + LastName As FullName,
Quantity * Price AS Cost,
b. Delphi TDataSets enable you to create a calculated TField object and use
the DataSet.OnCalcFields event
c. Perform any amount of data processing, summarizing, massaging etc. to
build a result set (query or temp table) to feed to the report.
ReportBuilder
-------------
Calculations in ReportBuilder are performed primarily using the TppVariable
component.
a. Set the Variable.DataType
b. Code the calculations using the Variable.OnCalc event.
c. Use the Timing dialog to control the timing of the OnCalc event. To
access the Timing dialog, right click over the Variable component and select
the Timing... option from the speed menu.
d. Set the LookAhead property to True, when you need to display summary
calculations in the title, header, group header, etc.
e. To perform calculations based on the results of other calculations use
the Calc Order dialog of the band. To access the Calc Order dialog, right
click over the Band component and select the Calc Order... option from the
speed menu.
By using TppVariable components ReportBuilder will take care of caching
intermediate results of accumlated calcs that cross pages.
There are a number of calculation examples in the main demos.dpr project.
---
Additional Notes:
1. Do NOT use Band.BeforePrint or Band.AfterPrint. These events fire
multiple times and therefore should not be used for calculations.
2. Do NOT store results in variables that exist outside of the reports. For
example - form level variables.
--
Regards,
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com
Nico Cizik
Digital Metaphors
http://www.digital-metaphors.com