The following graphic shows the visable objects of a Report, which are then described in more detail below.

image\REPBAND.gif

The Bands

There are three primary "bands" in a report, the detailBand, the headerBand and the footerBand.

As it's name implies, the detailBand contains the details of a report. In simple reports, the detailBand is where data from each row of a table is rendered. The details are shown by placing "Visible Objects" (Text objects, Image objects, etc.) onto the detailBand.

The group object is used to group data according to selected criteria. For example, in a customer table you might group all customers according to "State". At the beginning of each group, you could use a headerBand to note which "State" is currently being displayed. The group's footerBand could be used to display a count of all detail records displayed for that "State".

Note: In a Report based on a parent/child table, the group's headerBand and footerBand is generally used to display data from the parent table's rows. The detailBand is used to display the child table's rows.

The report engine automatically handles much of the processing.

For example:

If the report contains only a detailBand, the Report Engine loops through the table and generates one detailBand for each row or record.

If the report contains one or more groups, the Report Engine examines each row in the detailBand to determine if it belongs with the current, or subsequent, group.

The Report Engine handles the processing necessary to do a group "break".

Processing a report in this fashion requires two objects; streamFrame and streamSource.

The streamFrame and streamSource objects

The streamFrame is a visible object that appears as a container on a report, and is used to control the report’s layout. A detailBand, and other bands, are placed on a streamFrame, which is placed on a pageTemplate (described below).

Linked to your tables is a streamSource object that controls the reports output. The streamSource object loops through the data, row by row, and tells the Report Engine what to print.

The pageTemplate

The pageTemplate determines how the report will look. Use a pageTemplate object to set the report's margins and determine what is to be printed on each page. It contains the streamFrame, which in turn contains the detailBand and the group header and footerBands.