Crystal Reports Suck

There, that feels way better. I'm sure a co-worker will want to chime in here and say it's not so bad. Still, "not so bad" is not "awesome" or even "usable". Sure, you can get things done, but it usually involves prayers, the alignment of the sun and moon, and a goat with red hair.

I've yet to try some of the alternatives out there. I'm sure they are better (how could they not be), but Crystal Reports ships with Visual Studio and that's what my company uses. Maybe one day I'll get off my bum and try a few demos. I still have a feeling that it would be hard to convince the company to spend money on a different reporting engine when we have one already.

The only day I was fussing around with a report, and I think I figured out why it bugs me so much:

  1. It doesn't feel very object oriented. If I have an invoice with line items in memory as objects, I just want to pass the invoice to the report and then be able to create a sub-report on the lines. Further more, I'd like to reuse that bill object report and be able to place it in a larger report that I could pass a collection of bill objects. Maybe I need that report to print the invoices, and then a summary page. Keep in mind I'm not talking about a dataset with 2 datatables contained. I'm just talking about an invoice object that contains a collection of line items. Maybe I'm missing something here, and if I am, please someone put me out of my misery.
  2. It doesn't work with Nullables.
  3. The syntax inside is not the syntax outside. I don't like the basic language and I don't feel like I should have to use it just to create a report.
  4. Lack of templating/style sheets. This one feature would be huge. It would be awesome to create a company wide style sheet and just apply that to any report. Marketing decides that the company logo needs to be refreshed? Change it in one style sheet. Some dummy in sales broadcasts an internal report full of clients to a competing company? Fire him, then change your template for internal reports to have an "internal use only" disclaimer, and hope the next salesperson will notice your bold red disclaimer at the bottom.

I'm sure there is more I could come up with here, but lunch time is sharply coming to a close. I think I've just been spoiled with web development. The same engine I'm using for gathering input is the same for reporting, it's called the browser. Sure, you have some browser quirks to deal with, but at least it's a consistent experience. I can use my server side language of choice to generate markup and then make it all look the same with CSS. I'd love to hear some opinions on this. Maybe I could learn something to help me not hate it so bad.

4 Comments so far

  1. Sam @ April 2nd, 2008

    Crystal Reports was the thorn in my side as soon as we deployed reports with it. After 4 months of continuous hell I told my boss we needed a new reporting solution. Not a problem for me because he was once a developer too so he understood better.

    We switched to StimulReport.Net and the difference was so huge. It was so easy to use and you get full .net control over every object in the report. It lets you build reports dynamically in code too which worked out really well for creating a report writer app. We re-wrote all of our existing crystal reports with it and all I can say is I’ll never use crystal again. I’d pay for anything else out of my own pocket if I was told I had to use crystal. There’s other .net reporting tools as well such as ActiveReports and Report Sharp Shooter. StimulReport.Net worked out the best for my needs though.

  2. Report Writer @ May 21st, 2008

    First of all, SQL isn’t object oriented. The formulas have an isnull function. The syntax is dead simple. And, it does have templates and style sheets, though the style sheets are no easier to use, than applying them to your own static html pages.

    That being said, the software is kind of buggy and I’d rather just build an application to display reports. The problem with Crystal Reports is, to do anything complex, you have to write your own SQL, and many formulas. Managers usually think it’s just a drag an drop solution, but it’s really a clumsy pain in the ass, and I’d much rather just write code.

  3. josh @ May 21st, 2008

    @Report Writer

    My objects ARE object oriented. I want to report based off of my objects, not necessarily off of SQL tables. That’s my major beef with CR.

    It’s not even code friendly, let alone drag and drop!

  4. mogadis @ September 23rd, 2008

    damn, can’t get rid of perl thoughts, programming .net sucks so much :)

Leave a reply