Dynamically querying multiple data tables during report generation
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
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
This discussion has been closed.
Comments
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!
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