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

Using more DBpipelines with one report

edited April 2005 in General
Hello,

Is it possible to use more then one DBpipelines with one report. When I use
more then one, only the first record will shown in the report.

Please help because I don't know how to built the report with one query.
There I use 4 of them with 4 pipelines and one report.

I hope someone is able to help me with this problem.

Regards Ronald

Comments

  • edited April 2005
    Hi Ron,

    By design, a single report will only traverse one dataset (the connected
    datapipeline). However, using subreports, you can traverse multiple
    datasets in the same report. See the following article for more
    information.

    ------------------------------------------------
    TECH TIP: Fundamentals of Report Data Traversal
    ------------------------------------------------


    1. Single Table Listing Report

    Assign the Report.DataPipeline property and leave the DetailBand.Pipeline
    unassigned.

    The report will traverse the data from start to end (based on the
    datapipeline range settings and honoring any filters you've placed on the
    datset etc.)


    2. Master/Detail Report:

    A. Assign the Report.DataPipeline property to the master. Create a subreport
    in the detail band and assign the childreport.DataPipeline to the detail
    datapipeline.

    Use either the visual linking features available from the Report Designer's
    Data tab, or Use standard Delphi dataset linking to define the relationships
    between the datasets.

    The Report will traverse the master records and for each, the subreport will
    traverse the detail data related to the master.


    3. Master with 2 Details

    Configure as in 2 above. Add an additional subreport to the detailband. Set
    subreport.ShiftRelativeTo property to the point to the first subreport.
    Connect the ChildReport's DataPipeline to the detail data.


    4. Report connected to no datapipelines.

    When Report.AutoStop is set to True, the Report will print a single detail
    band.

    When Report.AutoStop is set to False, the Report will print detail bands
    until instructed
    to stop. You can control when the report stops by setting the
    Report.PageLimit property or by calling Report.DataTraversalCompleted
    method. Otherwise the report will never stop.


    Additional Notes:
    ----------------

    1. SubReports have a Report property that is of type TppChildReport. Thus,
    programmatically you can code SubReport.Report.DataPipeline :=
    myDataPipeline.

    2. ChildReport's traverse data following the same rules as above. A
    ChildReport prints in its entirety each time it gets a turn to print.

    3. For a Child style SubReport use the Title/Summary band rather than the
    Header/Footer (or use a GroupHeader/GroupFooter combo). A standard
    Header/Footer will not work because these always print at the very
    top/bottom of the page.

    4. Do not filter the dataset of modify it any way once the report.Print
    command is issued. If you need to do master/detail and cannot use
    linked datasets, then use the master DataPipeline.OnRecordPositionChange
    event to filter the detail dataset.

    5. The reports and datapipelines use dataset bookmarking. Make sure
    the dataset can support bi-directional navigation.



    Check out the RBuilder\Demos\Reports\Demo.dpr project. Reports 0071, 0072,
    0073 show examples of master w/mutliple detail style reports. Number 0072
    has two detail reports.

    --
    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

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