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

Where am I going wrong

edited October 2004 in General
Delphi 7 report writer prof.(demo).

I have following tables:

Customer. store the cust details
Invoice. (master is customer) stores the inv num, del adress etc
Inv_List (master is invoice) store the individual invoice lines. quant,
stock code, cost etc.

I put Cust_Num, Company in the header. This show customer number and
company name fine.

I put Inv_Num, Inv_Date in the header. This shows invoice number and the
invoice date fine.

I put quant, stock_Code, description in the detail band with controller band
band1.

The detail band prints multiple copies of the Inv_List.

I have tried setting the DBpipelines with the same master detail and set
the master field links but still have the problem.

Does anyone have a simple example to show.

Cheers

Comments

  • edited October 2004
    Sorry forgot to mention.
    only the first line of the inv_List prints multiple times.





  • edited October 2004
    Hi Steve,

    In order for ReportBuilder to traverse multiple datasets in a single report,
    you will need to use subreports, connected to each separate datapipeline.
    This is the architecture that must be used for a Master-Detail report such
    as the one you are trying to create. For instance, you report layout will
    look something like the following...

    Main Report - Connected to the Customer pipeline
    Subreport1 (inside the detail band) - connected to the Invoice pipeline
    Subreport2 (inside the detail band of Subreport 1) - connected to the
    Inv_List pipeline

    Before moving forward with this report, I would suggest spending some time
    with the ReportBuilder Developer's Guide located in PDF format inside the
    \RBuilder\Developer's Guide\... directory. This document goes through the
    methods and tactics of creating a Master-Detail report as well as offering a
    few tutorials that you may find helpful.

    Also, check out the Report demo application located inside the
    \RBuilder\Demos\1. Reports\... directory. This demo contains multiple
    master-detail examples that will get you on the right track.

    The article below gives more information on these types of reports.

    ------------------------------------------------
    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.