There comes a time in the life of a report when more is needed, when formatted bits of data organized onto paper is not enough, when the medium of delivery is no longer satisfactory, when the method of distribution becomes tedious. Enter Crystal Reports 9.0.
Those who have been around midrange computing and the customization of systems know that reports, while not glamorous, are the bread and butter of a programmer's workday. It is not unusual to visit the computer room of an AS/400 shop on any given morning, only to find the remnants of a small tree waiting for distribution. And after all, what does the "R" in RPG stand for, anyway? (The answer is "report.") So, if AS/400 reporting capability is so extensive, why use a Windows-based product to create reports?
Crystal Reports (CR) 9.0 is most definitely a Windows-based product. It is one of many reporting products offered by Crystal Decisions. However, with the advent of ODBC and OLE, iSeries data is readily available for use by CR.
The term "report writer" used to be applied to CR. I feel that this is unfair. This is a mature product in its ninth iteration, and by this time, it has grown beyond the scope of simple report writing. For lack of a better term, I will call it an "information disseminator." For not only can CR pluck data off of the iSeries to create reports, but CR can also combine that data with data from other sources to create output in a variety of forms, including Web pages, Domino databases, Excel spreadsheets, Adobe PDFs, MS Word documents, and over a dozen more options.
The cost of CR is about $500, depending on the level of product purchase. At this price, the temptation to compare features with Query/400 is overwhelming. Let it not be said that I have resisted temptation. Here are some basic features found in CR that are not found in Query/400:
- The capability to generate a variety of graphs and charts
- The capability to generate cross-tab reports
- The capability to generate statistical maps
- The capability to mix various fonts and colors within the same report
- Drill-down capability in summary reports
- The capability to create calculations at any level of the report
- The capability to insert sub-reports into an existing report
- The capability to use IF statements at any point within the report
- The capability to use parameter fields to allow user selection--not only of select criteria, but also of sorts, graphics, and anything else
- The capability to combine AS/400 data with data from other sources, like Excel or Access
- Array processing features
One could go on and on, but a simple example might be better at this point. The purpose of this exercise is to graphically realize the progress of a S/36 conversion by looking at three old libraries.
First, I create a file on the iSeries called TESTFILE by using the Display Object Description (DSPOBJD) command:
DSPOBJD LIBRARY2/*ALL *PGM OUTPUT(*OUTFILE) OUTFILE(TESTFILE) OUTMBR(*FIRST *ADD)
DSPOBJD LIBRARY3/*ALL *PGM OUTPUT(*OUTFILE) OUTFILE(TESTFILE) OUTMBR(*FIRST *ADD)
Figure 1: This Welcome screen is the first screen you'll see when you start up CR.
I am going to use the report wizard, which is somewhat similar to walking through a graphic representation of Query/400 screens. The wizards in CR 9.0 are separate entities and may be revisited at any time. There is a field selection wizard, a grouping wizard, a sort wizard, a charting wizard, etc.
Database selection may be made by using ODBC, OLE, or both! If you use OLE, CR allows you to store SQL statements and stored procedures in a repository. For the purposes of this example, I used ODBC. ODBC has been explained in previous MC Press articles, so I thought it redundant to include an explanation here. CR does have the added benefit of providing a "visual linking" expert, which makes the process easier. You may use multiple ODBC sources in a single report. This allows you to combine iSeries data with just about anything else!
After garnering data, I will need to use the Group Sort Expert in order to generate multiple charts. This is relatively simple, and is shown in Figure 2.
Figure 3: The Chart Expert creates various types of charts from your data.
After stepping through the wizards, I land in preview mode. This consists of a WYSIWYG screen and a design area (see Figure 4).
Figure 4: This WYSIWYG screen lets you manipulate your charts.
In order to display only the charts, I must hide the details and header portions (the grayed-out areas). This leaves me with my final product. Once I am satisfied with the look and feel of the report, I may then print it, save it, or export it. In this case, I exported the report to an MS Word document, as shown in Figure 5.
Figure 5: Voila! The charts can be dumped right into a Word doc.
This is a rudimentary example, and there are many others I could show you, but I lack space for that here. What you should understand is that CR is a highly comprehensive product that is actually fun to work with. On the other hand, CR is not without faults.
One pet peeve is the manner in which CR handles numeric fields. CR assumes that all numeric fields have two decimal places unless otherwise specified. If you are using a variety of numeric codes in your report, you will have to do a lot of field editing in design mode. In that same vein, you will have difficulties using numeric dates. There is no standard CR edit for numeric date fields, numeric social security fields, or numeric telephone fields. You will have to devise complex string formulas at the design level in order to format these fields.
The other issue I have is with Crystal Decisions itself. The larger Crystal Enterprise product will not install on an iSeries or AS/400 server. I attended a national CR user group meeting about a year ago and spoke to several key people, none of whom knew what an AS/400 was. Eventually, I was introduced to a few technical support people who thought that the AS/400 was a UNIX box! This was discouraging. The CR product integrates very well with DB2/400, and the people at Crystal Decisions should be aware that there are several hundred thousand 64-bit server customers waiting to use their product.
These complaints are relatively minor. CR is still a very effective tool. I find my own productivity greatly enhanced when using CR. Users really appreciate the polished look and feel of the reports and the ability to obtain preformatted spreadsheets. Many shops use CR to generate Web pages and PDFs. Other shops just use the reporting features. If you are a Visual Basic programmer, you will find many methods and components available to you. SQL programmers can create their own repository and access AS/400 stored procedures. Those familiar only with ODBC can use ODBC just as effectively.
In times like these, when budgets are tight, most new purchases have to be justified. But it would be hard not to justify at least one copy of CR per shop. After just a few reports, the value of CR will become apparent. The results will justify the purchase.