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

Looking for a suitable OO approach

edited July 2004 in General
Hi,

I am in the process of evaluation ReportBuilder (Version 7.03) as our
possible new report generator.
And I have some idea of how I would like to work with it (or any other
report generator).

But I am not sure, if it is the right way (or a possible way for
ReportBuilder).

Most of our application (99% ?) is kind of object-related if it comes to
printing.
So quite in general I need something like:
Print invoice(-object) with ID 42 to a printer or export order(-object) with
ID 123 to pdf

And although we have of course pre-defined standard reports for all kind of
"objects",
we would like to (or have to) offer our customers the possibility to create
their own reports.

I am planning to let our customers select the data they need for their
reports. Based on
our object/database model they can start with the object they would like to
print.
And then they can add additional information, like the invoice items of the
invoice (one-to-many)
or maybe some address of the invoice (one-to-one).
My application would then at runtime create datasets (pipelines) for every
datasource like
invoice, invoiceitems, product, and so on.

After this step all data would be available for printing. The rest should be
done by the report
(sorting, grouping, and so on).

So I made some tests to find out how ReportBuilder is capable of managing
this kind of approach.
I created the needed Datasets for an invoice report:
- the main dataset (say: dsInvoice) contains only one record with the main
invoice data
- a detail dataset (say: dsInvoiceItems) constains the invoice items
(one-to-many)
- another dataset, containing the data of the address referenced in the main
invoice data (one-to-one)
- yet another dataset (say: dsProduct), containing additional data for every
invoice item (one-to-one)
...
...

One thing I tried but failed to reach: grouping/sorting the invoice items on
some field in dsProduct (say: ProductNo)

Is there a solution to this? If so, how could it look like?
Do you think my approach is OK and works with ReportBuilder?
Or which approach would you suggest?

BTW, isn't there a zoom facility for the end user designer?

I think I am going to have more questions when I got deeper into
ReportBuilder...
;-)

For now, many thanks in advance,

--Heiko

Comments

  • edited July 2004
    Heiko,
    if you don't want to print from data directly i suggest you use the JIT
    pipelines
    with those you can keep you objects and still print what you want
    works perfectly
    cu
    marc

  • edited July 2004
    > Heiko,

    I think the question which type of pipeline to use is not my biggest
    problem.
    But I was thinking about using JIT pipelines, too. On the other hand I have
    already my own
    dataset descendents, which I could use also, I think.

    But thanks anyway for your suggestion.

    The main problem is which approach I should use.
    Think of the metadata structure of my database. Let's say 200 tables which
    are related
    to each other by either one-to-one or one-to-many associations.
    Starting with the main table for a specific report the user may add
    additional related tables.
    Because I know all the details about the relations I can load all the needed
    data.
    The report is only responsible to present the data to the user, including
    sorting, grouping and so on.

    --Heiko
  • edited July 2004
    Hi Heiko,

    Thanks for evaluating ReportBuilder.

    First, you may want to take a look at the Report Wizard (File | New) from
    the main designer. You could probably use this wizard as a starting point
    on creating your end-user application (basically giving your users the
    ability to customize a report without haveing to design it).

    ReportBuilder does not have any internal data sorting capabilities. When
    you connect a dataset to a report, ReportBuilder will simply traverse the
    data straight through displaying the chosen field values. All sorting needs
    to be done inside the datset in SQL or manually in code. I would suggest
    spending some time with the ReportBuilder Devloper's guide and the
    ReportBuilder Demos. These contain mulitple examples of how to group data
    based on certain fields as well as the Master Detail report design.

    Unfortunately there is not zoom feature for the designer in the current
    version of ReportBuilder. To make exact measurements, you can use the
    Position dialog of each report component by right clicking over the
    component and selecting "Position" from the popup menu.
    --
    Best Regards,

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