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

Global Corporate Design

edited September 2003 in General
Hi,

We are currently using FastReport and evaluation other reporting enginges.
We are doing the switch because of several bugs and and a few other
problems. Namely it isn't easy to define a global design (template) that for
example consists of an image, several text elements etc. In Rave-Reports you
can define Global Pages the can be referenced by ordinary reports and all
changes to the Global Page are immediately reflected on the referencing
reports. It something like that possible with Reportbuilder ?
Next question: How do you handle Report-Changes ? Would it be possible to
create some Report-Patcher, that merges the changes into an existing Report
? The Problem is that our application's changes need that the Reports are
updated as well(invoices for example) and our customers currently have to
update their Reports manually or start from our blank ones.

regards,
Magnus Jungsbluth

Comments

  • edited September 2003
    Hi Magnus,

    Thank you for evaluating ReportBuilder!

    1. Reports in ReportBuilder are always saved in a template format (whether
    it is inside a report component on a form or saved as a template file .rtm
    on disk). This makes it very easy to provide users with a starter or global
    template design that they can add to. It is also possible to create custom
    Report Wizards that guide your users through the report creation process in
    an easy to follow wizard interface. Using this wizard, you can load an
    already existing report template and add to it according to the options your
    user selects.

    2. When you say Report Patcher, do you mean you would like to perhaps change
    the layout of an invoice and be able to merge it with an already existing
    invoice so that it has the newer layout but the same data? This would be
    possible to do using a report object loop. This way you could loop through
    every object in an existing report and move/replace it according to how the
    new template is designed. This would require however that a new Report
    Patcher utility be created for each new template you create. See the
    article below on how to create and use a report object loop.

    ----------------------------------------------
    Tech Tip: Loop Thru All Objects in a Report
    ---------------------------------------------

    A ReportBuilder report is composed of a set
    of components. The basic structure is

    Reports.Bands[].Objects[]

    The bands and objects within the report can
    be accessed directly by object name or
    via the Bands and Objects array properties.

    Below is an example of using the Bands and
    Objects array properties to change the font for
    all objects on a report.


    uses
    ppClass;


    procedure AssignFontToReport(aFont: TFont; aReport: TppCustomReport);
    var
    liBand: Integer;
    liObject: Integer;
    lObject: TppComponent;

    begin

    for liBand := 0 to aReport.BandCount-1 do

    for liObject := 0 to aReport.Bands[liBand].ObjectCount-1 do
    begin
    lObject := aReport.Bands[liBand].Objects[liObject];

    if lObject.HasFont then
    lObject.Font := aFont;

    end;

    end;

    --
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited September 2003
    Hi

    (whether
    .rtm
    global
    custom
    in
    your

    thats nice...

    change
    through
    the

    ok, that's "quite" the same in Fastreport. Our Main Problem is that our
    customers vastly change more than the layout. They add their logo, some
    legal texts and thats it. Everytime we change main things (add new fields,
    etc.) they have to go through all reports and append the same changes they
    did on the first run by hand which can take a little time.
    The extraction of the changes and the applying shouldn't be any problem
    though, just wanted to ask if there is an easy way (aka Rave Global Pages).

    regards,
    Magnus Jungsbluth
This discussion has been closed.