Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Problems with ppRegion using KeepTogether

edited March 2005 in General
Hi,

I designed a report that it's has a ppRegion with two lines in the
DetailBand and it's KeepTogether property is True. I have too a code in
AfterPrint event that sum the value of a field of the record in a variable.
Otherwise, at the end of some page that it's doesn't fit the ppRegion
completely, not with standing the AfterPrint event of the DetailBand is
fired. Therefore, the value of the sum, at this page, is wrong, because the
ppRegion will be printed on next page. And, in the next page, then event is
fired again. I try the OnPrint event of ppRegion too.

What I can make to resolve this problem??

Thank's,


Weverton Gomes

Comments

  • edited March 2005
    Hi Weverton,

    Try using the OnCalc event of the variable to calculate the sum. This is
    the only event in RB that is guaranteed to fire only once per traversal. We
    recently made some enhancements to this event in order to handle dynamic
    detail bands across pages for RB 9. Take a look at the following article
    for more information on making calculations inside a report.

    ----------------------------------------------------------------------
    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

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
This discussion has been closed.