About a month ago, I tweeted “Crystal Reports is Dead to Me”. Hopefully that day I didn’t loose some readers… I wanted to take the chance to explain my frustrations with CR and some very interesting tricks of the trade that may serve as very useful for the people who happen to find this article searching on Google. At the end of the day, we got CR to finally do what I wanted but not without 4 months and thousands of dollars wasted.
Almost 9 months ago, I started managing a project with SAP where we sought to create a BI Strategy Assessmeent for customers. The idea is create a page where users can fill in a form, and then get a PDF report with customized results. The idea is make the report graphical and informational. Knowing that Crystal Reports is still one of the best reporting technologies I figured it would be great to use an SAP owned technology to do the reporting. I brought in George Peck who is a top Crystal Reports guru to ensure that we could get as close to what the business stakeholders wanted for the project.
Before I go into the details I have to say in hindsight, it would have been cheaper and easier to build a custom, one-off HTML page with some fancy chart controls and a little CSS to format the page for PDF.
Limitations of Crystal Reports that were frustrating
Crystal Reports is an amazing technology because it connects to everything and provides a powerful engine to process and stage data. Reporting output for print is also extremely flexible. However, in today’s world where polished graphics, dashboards, and Apps have become the standard for presenting information, reports need to include the same bells and whistles.
1. Charting is inflexible- We ended up having to use bar charts because we could not get a stacked bar chart to display data using data visualization best practices.
2. HTML Text support is severely limited- There are a handful of very basic HTML tags that are not supported, but the one that blew my mind is ordered and unorded (bullet) lists. How a reporting technolgoy does not allow for bullet points is beyond me.
3. Using CR Server to generate PDFs does not provide any kind of loading status, and did present extra lag time when using a custom JSP to do single sign on.
By far the biggest nightmare of this project was creating a single report capable of displaying 8 different languages. There is a perfect combination of fonts, print drivers, and font settings that will ensure you can output multi-lingual reports with CR without getting error codes or square boxes as foreign characters.
1. Use Arial
2. Use a generic post script driver
3. Do not dynamically assign fonts
4. Make sure the client and server both have the exact same fonts and when installing a font on a server, reboot the machine
What I will use Crystal Reports for in the future
We currently use Crystal Reports internally for error log and usage reporting for our cloud but that is it. Everything is about having the right tool for the job, and unfortunately, CR for me is the tool that I will only use to extract data out of a DB into a boring report or Excel.