CAPTCHA
Image CAPTCHA
Enter the characters shown in the image.
This question is for testing whether or not you are human.
  • Create new account
  • Reset your password

User account menu

Home
The Hyperlogos
Read Everything

Main navigation

  • Home
  • My Resumé
  • blog
  • Howtos
  • Pages
  • Contact
  • Search

Crystal Reports

Breadcrumb

  • Home
  • Crystal Reports

Crystal Reports is a database reporting tool that has over time become the standard for reporting. It is by far the most used tool to perform this task, in spite of the fact that it sucks eggs. Crystal has so many failings it's hard to know where to start talking about them; but I think I'll manage somehow.

The first thing you will notice as you try to use the software is that layout control is tortured to say the least. Trying to resize a field can often be an exercise in frustration, as there is only approximately a 1x3 pixel area from which you can drag the resize handle. Getting fields moved around and aligned is frustrating, amusingly enough, for much the same reason it's frustrating placing elements in HTML; margins and such are added to the element, not outside the element, and so if you put a top border on some text, you can no longer align it from the top edge, but must do it from the bottom, whereas the only easy way to align text with borders all around to some text that has none is to put invisible borders on the text that didn't need any in the first place.

Sound annoying? There's more! Let's say you want the median value of a bunch of already-summarized values. Crystal doesn't allow you to summarize a summary, so you must calculate this manually. There are a number of summary functions, like count() and average(), but no median(). Calculating a median requires that you have all the elements sorted, and there is no function to sort arrays. This means that if you want to calculate this kind of value, you will have to do it manually, all the way down to writing a sort function. Oh, by the way, arrays can be no more than 65535 elements long. have fun!

Crystal has numerous other failings as well. It supports only vbscript and "crystal syntax" which is a kind of unobfuscated vbscript, in which the comparison operator is = and the assignment operator is :=. This is, well, stupid. It's backwards from every civilized language and it should be taken out and shot and replaced with windows script host or ISAPI support (because, of course, it's a windows-only program.)

There can even be problems when you're not using the program. For example, crystal is embedded into many applications in order to provide them reporting. Among them are two software packages I use in my current place of work, the Micros point of sale software (the term POS was never so well-applied) and Aristocrat OASIS, which is casino management software. Now, the latest Crystal is version "XI" (roman numerals being "in" at the moment) but some sort of issue with it causes poor results with OASIS, so we use Crystal 9. This is the version specified by Aristocrat for use with OASIS. That's right, our vendor's choice of reporting tool is two versions old. The version of Aristocrat we have here in-house uses Crystal 6 for its internal reporting, but Micros uses Crystal 9. However, they use a very slightly different version of the embedded crystal product from the version that comes with the retail box product. The upshot of this is that if you install the Micros configurator, and then install Crystal 9, Micros loses the ability to run reports. Classy!

Anyway, my initial job at my current place of employment was to do database reporting, so learning Crystal was the first thing I did when I got here. In this pursuit I learned a little something about how to make it do some rather obvious things, and I can help assist you in the same pursuit. Below are some documents (some with sample reports) that might help you (and serve as documentation for me.)


Miscellaneous

  • OASIS Selection Criteria
  • Alternating Line Colors
  • A description of when specific elements are processed (passes)

Calculations

  • Calculating the Median of an Array
  • Making Sense of Time: Converting a bunch of seconds to something useful

Sorting Arrays

  • Cocktail Sort
  • Gnome Sort
  • Insertion Sort

Aristocrat OASIS

  • Functions for OASIS
  • Rules of OASIS Reports
  • OASIS Stored Procedures
computer
software
database
  • Log in or register to post comments

Footer menu

  • Contact
Powered by Drupal

Copyright © 2025 Martin Espinoza - All rights reserved