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

Variable values

edited May 2004 in General
Hi,
Had a question regarding variable values.
Suppose I have:
Var1 on page 1,
Var2 on page 2,
and Var3 on page 2 is the Var1.Value + Var2.Value...

does Var1 lose its value when I calculate Var3 in the OnPrint event?

Comments

  • edited May 2004
    Hi,

    Var1 should not ever "loose" its value unless you change it or its Timing
    property is set to something other than OnReportEnd. For future reference,
    you should never use the OnPrint event to make calculations as this event
    can fire more than once per traversal. If you use the TppVariable.OnCalc
    event you are guarenteed only one execution per record. Check out the
    article below for more information on making calculations with variables.

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


    --
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited May 2004
    Does this apply if I refer to values from another subreport?

  • edited May 2004
    Hi Shanil,

    Yes, when creating a sum of values in a subreport in the main report, you
    will need to use the OnCalc event of a TppVariable inside the subreport to
    update the value of another TppVariable in the main report.

    --
    Best Regards,

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