layout – Refactoring Crystal Reports: whether to, to what and why? – Education Career Blog

Report design, generation and maintenance isn’t hard, but it is dull. We have a number of legacy (to quite different degrees of legacy) reports in Crystal Reports XI. These are designed for A4/PDF – not necessarily printed, but to be of a predictable layout and there’s no possibility of us retiring them any time soon.

All connect to existing stored procedures (SQL Server 2005) to acquire their data. A lot of time has been sunk in getting these reports to look just so. The actual creation of reports is mostly done via the .NET/C# API and exported to PDF. There are a number of locally developed and maintained applications that are stable and handle this process well.

So we like the fact that Crystal Reports is stable, that our apps produce these reports reliably, that the PDF output is consistent and that when the Crystal Reports template is approved and set, it just works.

There are some big problems with this situation though. The biggest being that any changes to the underlying report templates themselves are a huge pain; getting the Crystal Reports template to a point that users are happy is a royal hassle and can involve a long iteration of DTP/graphics/database/reconciliation and myriad other niggles.

Combine that with Crystal Reports being a relatively rare skill and not one people want to admit to, we are trying to think up alternative solutions.

Some thoughts I’ve started to consider – and any others welcome!

  • Does Crystal Reports 2008 offer any benefits over XI?
  • How have others managed a migration away from CR? And what to?
  • Given the data access layer is well formed, perhaps generate graphs via an Excel service and then import them as graphics to a framework template? Crystal, another – has anyone tried anything like this?
  • Is Reporting Services any better? (We have some RS skillz but again, another thing that people are loath to actually own up to knowing anything about.)
  • Are there any layout tools available (preferably with a .NET API) for what, in the old days, would be called Desktop Publishing? If we have graphics/tables/other objects as images that could then be rendering automatically,

Ideally I want to move to a solution where the users are in greater control of the underlying changes, and whether this can be handled programatically within tools that we can provide to them and so that I can be coding rather than editing Crystal Reports templates.


So what other problems are you having with Crystal? Sounds like you want the users to handle the reporting…(don’t we all). The problem with that is they never want to use whatever data model is offered. Someone has to know how to query the database. You already have that by using stored procedures. Maybe let a couple users learn basic crystal principals (grouping, sorting, summing, etc) and you write the stored procedure and they format it with crystal. That way you bypass the biggest stumbling block with crystal, which is doing the table joins in crystal.

I have crystal knowledge and think it’s fairly easy to use. I wouldn’t call it skillz though, more like I know what it can and can’t do, so I can save myself a lot of time.

I’m not trying to defend Crystal, but if it ain’t broke…


We recently upgraded to VS 2008 on XP. Our users are still running the .NET 2.0 framework on Win2K, and a company-wide upgrade is not in our near future. What we didn’t find out until we’d already upgraded from 2005 to 2008 is that the Crystal Reports redistributables that come with VS 2008 only work on XP or higher. Oops. So, we’re now unable to edit our old reports because CR will automatically update it to the new version.

What I wound up doing is using our existing XMLSerializer, building a class that holds the report data (lots of string and List<T> properties, essentially), and serializing it to an XML file. Insert an XSL stylesheet declaration that transforms it to HTML/CSS, and open it in IE.

It’s wound up being quite a bit faster than Crystal Reports, particularly for development, and I can typically have them just give me a Word document of whatever the hell they want the report to look like, export it as HTML, clean it up, and then use that as a template for what the XSL generates.

It’s nowhere near as full-featured as Crystal Reports, but for what we need (XRay and Lab reports and work orders), it’s perfect.

Leave a Comment