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

Dynamically querying multiple data tables during report generation

edited August 2003 in General
I have a D7 application using 9 ADO tables in an Access database. I have
several working QuickReport reports that make use of multiple (up to 7)
TADOTable components during report generation in order to access the
data dynamically, as required. This enables me to dynamically pull the
various data required out of different tables during report generation
(the thought of trying to do this as an enormous join frightens me, and
it would have to be dreadful for performance).

I have just started investigating ReportBuilder Standard and FastReport
as replacements for QuickReport (I find Rave confusing and
non-intuitive). It seems to me that in ReportBuilder each report only
has a single data source component (pipline). This means I would have to
include essentially all my required data in each record.

Q1: Does this mean that I can't dynamically access data from tables
other than the one associated with the report's pipeline?

Q2: If I can dynamically access data from multiple tables, can you point
me to the section in the Developer's Guide where this is explained?

Q3: One of the reasons I'm quitting QuickReport is that the standard
version can't do duplex printing (alternate pages print upside down).
Another issue is that I can't draw boxes around items in the detail
bands. I assume that neither of these is a problem in ReportBuilder
Standard?

tia, ADS

Comments

  • edited August 2003
    Alan Smith wrote:

    OK, I've made some progress. I've downloaded the trial version of
    ReportBuilder Standard and Worked the tutorials through to the Master
    /Detail /Detail report. I can see that you can have multiple pipelines
    associated with a single report. I hope and expect that they aren't
    confined to a single hierarchy (Classes have Students and Subjects.
    Results are details of both Students and Subjects). This leads me to two
    more questions:

    Q4: Can I read a table into an array of records (either globally in
    Delphi, or in an initialisation event for the report itself (e.g.
    OnStartFirstPass))? This may be necessary to improve performance on a
    value lookup that I use about 30K times.

    Q5: ADO. I tried replacing a BDE table with an ADO connection & dataset,
    but only the first record displayed in the detail band. I replaced the
    dataset with a table to no effect. Does the Standard edition support
    ADO? And if so, what am I doing wrong?

    Regards, ADS

    PS: I love laying out reports in ReportBuilder as compared to
    QuickReport. Everything just works they way you would expect! Excellent!
  • edited August 2003
    Alan,
    The datapipeline approach gives you a great deal of flexibility. If you are
    worried by speed, you could load your data into a Memory table and then
    access this through a datapipeline or use the JIT datapipeline to access the
    data stored in another format.
    I've used ADO extensively and have only found a slight performance penalty
    when doing MD lookups through the DADE as the current code is not optimised
    (keeps opening and closing queries). I haven't got around to tracking down
    the best way to improve speed, but the reports do generate as expected (just
    take a few seconds longer than I'd like!).
    Andrew

This discussion has been closed.