![]() |
Technical Articles |
The Complete Report
By David A. Gray, MBA, Chief Wizard, WizardWrx
© 1992, David A. Gray, MBA
This article first appeared in Exploring DataEase II, an anthology of practical technical articles about developing applications in DataEase, a pioneering MS-DOS data base development environment. The author used DataEase extensively during its heyday in the late 1980's and early 1990's and became recognized throughout the world as an expert on report design. Though the examples look dated and DataEase has largely fallen into disuse by the end of the decade, the concepts presented in this article remain relevant.
What makes a report complete? Is it enough that it contains the right data? Is it enough that the records are arranged in the right order? The answer to both of these questions is emphatically, No. For one thing, neither question is as simple as it might seem.
This essay offers some suggestions of things to ponder as you think about these and other questions that affect the reports you design. While the examples reflect personal taste, the guidelines they illustrate come from fifteen years of designing and testing computer reports. By testing, I mean more than making sure they print out the right data and compute the statistics correctly. I mean testing various designs with real users and their real data and reporting needs.
In some ways, the heading is the most important part of the report. A good one clearly identifies the report. It tells the reader at a glance:
Ø The unique name of the report which clearly identifies its purpose and audience.
Ø Which records are included.
Ø How the records are grouped and sorted.
Ø When the report was printed.
Ø How current is the data.
Using the DataEase report writer, I will show how each of these elements makes the report more useful.
Figure 1 — DataEase generates a very basic columnar report format that looks like this. |
When DataEase generates a report format for you, using either the QBE-Quick Reports facility or the advanced DQL facility, it generates a basic, functional layout. In some respects, this is the best that DataEase can do, since it doesn't have the information to complete the heading as I have described. (Yes, it could prompt you for a title but that would slow you down if all you really needed was a quick, one-time report!) Now, let's ask ourselves a few questions as we examine the report layout in Figure 1.
This report layout covers the very basics quite well:
Ø Each column has a heading.
Ø The columns are well spaced.
Ø There is a definite marker to identify the end of the report.
While this is fine for a one-time report, a production report needs much more information in its heading. Let's take each of the points above and show how this report can be easily and quickly improved.
Unique Title. — If each report has an unique title, you can make a list of report titles and the procedures that print them. While the DataEase limit of 20 characters for a procedure name may be inadequate, with such a list, you can easily identify the procedure that prints any report. This helps tremendously with maintenance and research. With the dynamic systems that we develop using DataEase, it is often necessary to study a procedure to learn exactly how a statistic is computed or how records are selected, since often the DQL code is the only real documentation of the report's inner workings.
Record Selection. — In many applications, there are several reports that differ only with respect to the records that are included. More to the point, since you can specify record selection criteria through a data entry screen, all such reports must show these criteria to be usable. Of course, the operator can write them on the reports as they come out but this is labor-intensive and error-prone. This information should appear in the heading, so that a reader can tell at a glance what records are included. This information may be considered a sub-title. This will tell you whether the report contains the required information and will enable you to identify reports run in batches. (See "Beating the Batch Blues," by the author in ExpertEase, February 1992 for a discussion of how to run batches of reports effortlessly.
Grouping and Sorting. — Applications often contain several versions of a report that differ only with respect to the order in which the records are grouped and sorted. Since this information often affects the usefulness of a report in a given circumstance, it should be readily available in the heading. Otherwise, the reader must scan the report and guess how the items were grouped or sorted! It can be especially difficult to guess how detail records are sorted, though grouping is usually more obvious.
When Did It Run. — Because we are all busy people, regular reports sometimes accumulate on our desks before they get read. When this happens, you need to be able to identify the most recent report. Even if the report properly identifies the record selection in its sub-title, it is often faster to glance at a well placed run date. Also, at month-end, you will often be presented with two, three, or more versions of a report covering the same period as last-minute updates occur. You may also need to know this when you have two or more versions of an edit list to sort out. "Which do I keep and which do I throw away?", you ask. While testing a new report, the date and time are essential because you soon have several (sometimes a dozen or more) versions of the same report on the work table.
How current is the data. — This last item may seem strange since we just discussed printing the date and time. This information is only pertinent if the report contains data drawn from outside sources. For example, in one system I renovated, the home office receives weekly exports from four division offices. In that system, it is useful to know how recent the data are from each division because one division may be a week behind the others in reporting. When your data comes from an outside source, be it a mainframe or another PC application, you need to know how current the outside information is. For instance, if the report shows that the data are older than you think, you may need to ask why it is so old.
Have you ever thought of the group headers as landmarks? I still sometimes gaze in awe as a printer spews out page after page of reports from these little computers we use. In a long report, a well designed group header can help readers find their way to the detail they need to see. What makes a header a good landmark?
Ø It is surrounded by white space. I leave at least one blank line above and below the header text.
Ø It is indented from the detail lines. Depending on circumstances, you may choose hanging indents, paragraph indents of five spaces or so, or centered text.
Ø It clearly identifies the group of records which it separates.
Other things you can do to spruce up your headings include:
Ø Enclose the heading in a box. If not overdone, these can look very nice, especially if you have a printer such as the LaserJet that can draw real boxes.
Ø Start each group on a new page. If the groups are large, this will let your reader find a group by fanning through the tops of the report pages.
Ø Incorporate the heading into the page heading. This makes the heading work like the running heads that are used to identify chapters in a book. This technique is very effective in large reports.
Multiple group headings require special attention. You may want to make selective use of fonts and special effects such as bold or italic type to distinguish major groups from minor ones. Think how publishers use type, spacing, and decorative effects to make such distinctions in books and magazine articles. Your report is as much written material as is a book; many of the same techniques are effective for reports, too.
Finally, if the report is really large, you may want to produce an index to the major sections. Data for the index can be spun off into a work form and another procedure can print the index as an outline, showing the page number on which each group starts. While this may be overkill for a simple report with one level of grouping, it is very helpful if there are many levels of grouping and if the report is hundreds or thousands of pages long.
Every group should have a clear beginning, a complete middle, and a clear completion. Requirements for group trailers vary, depending, among other things, on whether the report contains group statistics. In all cases, though, the report should clearly identify the end of a group. Here are some things to consider:
Ø If each new group starts on a new page and the report will be taken apart and distributed, each group should contain a trailer that at least identifies the end of the group, so that the reader can be sure that the report section is complete.
Ø If the report contains multiple levels of grouping, each group trailer should identify the level of group which it completes.
Ø If the group is not otherwise identified on the page, the group trailer should contain a brief phrase that identifies the current value of the grouping field.
Ø Like the group header, the trailer should be separated from the detail by white space, lines, or a combination of the two.
Ø Generally, group statistics should fall directly under the corresponding column of detail. This is an area that may require some cleanup in the stock formats generated by DataEase.
Ø The text should identify whether the statistics given are counts, totals, averages, or other descriptive statistics.
Ø If more than one statistic is given for a column, such as its sum and its mean, both should be clearly marked.
Ø Important statistics should be on the ends of the line, usually the left.
Beyond these basics, important statistics can be given emphasis by printing them in bold, drawing boxes around them, etc. I will say more about this later in a general discussion on emphasis.
It is all too easy to ignore the report details, beyond making sure that all the required fields are on the report. Attention to a few matters when laying out the detail lines and the corresponding column headings in the page heading can make a huge difference in the usefulness of your reports. Here are some suggestions:
Ø Column headings should be placed directly over the data.
Ø Column headings should appear at the top of each page. It is worth the extra paper to help your readers!
Ø Columns should be well spaced but not too far apart.
¨ Usually, two or three columns between fields gives enough space to help the eyes keep the columns separate.
¨ Too much space, usually more than about 4 columns, makes it harder for the eye to follow a line across the page.
Ø If the detail contains two or more lines per record:
¨ Use the NOSPLIT operator to keep records together.
¨ Stagger the fields on each line and stagger the headings to match.
¨ Indent the second and subsequent lines of detail for each item.
¨ Consider using dashed lines or rows of asterisks in the headings to further help the reader.
¨ In most cases, leave a blank line between entries. Again, it's usually worth the extra paper.
Ø If the detail is sorted, place the field that is sorted in the left-most column.
Ø Place alert messages in the right-most column, so that a manager can skim the right edge of a page for messages.
I will have more to say about treatment of detail in my general discussion of emphasis at the end of this article.
Every report should identify its end. Even if there are no grand totals or other overall statistics, your report should clearly identify its end. Especially as more of us use network printers, it is essential that you be able to determine that you got the whole report.
Endings can be as simple as a banner or double line across the last page.
If the report contains overall statistics, everything that I said about group trailers applies equally to the end. The overall statistics should be clearly identified as such, to distinguish them from the last group trailer which will print just above them.
If the report is one which will be divided among several people, there are two ways to handle the end:
Ø If each group has its own trailer, no overall statistics are required, and you always get a given group last (such as the West division), you can safely omit the end banner.
Ø If you need overall statistics, print them on a separate page and clearly identify it as a totals page.
¨ This can be done with a banner.
¨ Remember that DataEase will use values from the last group for any information you have printed in your page heading.
Even if the ending statistics are printed with the last group, you may want to use extra white space or other visual aids to separate the overall statistics from the last group trailer. This is especially true if you have two or more levels of grouping.
Since reports often contain data of varying degrees of importance, you may want to consider some techniques for calling a reader's attention to the more important items. Most of these suggestions apply as well to detail items as to groups. The following list is hardly exhaustive of the ways you can emphasize the information that matters most:
There are other ways to give emphasis to the important data in your reports. Evolving technology continues to enrich the palette from which we can work to develop useful reports. As we move into Windows, more tools will become available to us, including pictures and clip art. Hopefully, Windows will also make developing polished reports much easier than it already is with DataEase.
To give you a sense of the possibilities that can be achieved simply with the basic tools of the DataEase report writer, I conclude this article with some examples of some of the techniques discussed in this article.
|
Figure 2 — This report illustrates the complete heading and a Group Header that really stands out. Note the use of bold text in the report heading and group header. |
|
Figure 3 — This report illustrates one way to make the Group Trailer stand out. Note the use of bold lettering again to make the grouping value easy to identify. The required fancy DQL takes little time to set up using JOINTEXT. |
This first example illustrates most of the points I made about complete headings. In addition, it shows a header surrounded by white space and use of indented body text to further set apart the heading. Bold text is used to emphasize the groupings and the current value of the grouping value. Spaces are suppressed to create a smooth flow of text.
|
Figure 4 — This report illustrates another way to make the Group Trailer stand out. The box is drawn entirely with the box drawing characters on the ALT-F10 key. |
This next example illustrates one way that a Group Trailer can really stand out and communicate. Also note the use of an asterisk to identify the salespersons whose sales are significantly below average.
This next example illustrates another way that a Group Trailer can really stand out with the box drawing characters. Of course, this technique is less useful if your printer won't print them! However, the entire LasserJet series and many dot matrix printers will print the boxes very nicely.
When I started writing computer reports in the 1970's, you could have any type style, so long as it was Courier 10 point, set 6 or 8 lines to the inch. With effort, you could get bold lettering, white space, crude dashed lines, and a few other special effects. Today, we can consider color, fonts, shading, and many other graphical effects. As DataEase founder Arun Gupta observed at the 1992 International DataEase User Conference, the skills required of application developers are evolving with advances in technology and users' expectations.