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

Subreports with only one data record

edited December 2003 in Subreports
I am using D7 and RB 7.02 with MS SQL and ADO linked queries. I have a
report based on employees where the detail section prints one line per
month. In the group footer, I have a subreport which is suppose to print
another 12 lines for the same employee. The main report prints fine, but the
subreport is only printing the first record (out of 12). I have seperate
query objects (linked on EmployeeId) and db piplelines for the main report
and the subreport.

What am I missing?

Craig Cohen
D. Lawton Associates

Comments

  • edited December 2003

    Make sure the subreport is connected to the detail datapipeline. A
    report/subreport that is not conncted to a datapipeline will by default
    print a single detail record. The data-aware controls such as DBText will
    print from the current record. Thus the effect of printing the only the
    first record.

    I cannot determine from you description whether you are linking the queries
    using RB's Data workspace or using external datasets. If you are using
    external datasets, you can check the linking relationship by placing two
    DBGrids on a form and connect to the queries. Below is an article on linking
    datasets:


    ------------------------------------------------------
    Tech Tip: Linking SQL Queries for Master/Detail Data
    ------------------------------------------------------

    The following example shows two options for linking SQL queries to create a
    master/detail relationship.

    In this example, we are using Delphi's DBDemos data to create a
    Customer/Order relationship. Thus we wish to link the Orders detail to the
    Customer master.

    I. Delphi Query Linking
    ------------------------

    a. Set the detail TQuery.DataSource property to point to the master
    query's TDataSource component.

    b. In the SQL "Where" clause for the detail query use a ':' followed by
    the linking field name from the master:

    example
    select *
    from orders
    where orders.CustNo = :CustNo

    Now each time the master record position changes, the detail query will
    automatically be refreshed with the correct result set.


    II. RB DataPipeline Linking
    -----------------------------

    a. Set the detail DataPipeline.MasterDataPipeline to point to the master
    DataPipeline.

    b. Use the detail DataPipeline.MasterFieldLinks property to define the
    linking relationship

    c. In the SQL for the detail, retrieve all records and sort them by the
    linking master field:

    select *
    from Orders
    order by CustNo


    Notes:

    1. Using RB DataPipeline, each query is executed only a single time - thus
    performance is much faster.

    2. RB Professional and Enterprise Editions include a visual Data environment
    for creating SQL queries, defining linking relationships, and creating
    Ask-At-Runtime parameters. Using the RB tools you could create the above
    linked queries in about 10 seconds.


    --
    Tech Support mailto:support@digital-metaphors.com
    Digital Metaphors http://www.digital-metaphors.com




    --
    Nard Moseley
    Digital Metaphors
    http://www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.