Crystal Reports Needs To Die

  • Winner of the 2016 Presidential Election

    So I've worked with databases in various shapes and forms over the years. Since I know SQL well enough, I don't usually need reporting tools as I can write the relevant queries myself without a clutzy GUI to make me hate my life. However, Crystal is the pinnacle of stupid.

    I got involved to help a customer to pull something from our database and its their tool of choice. From what I can see, Crystal more or less generates one query per report which ends up being a simple select with a where clause. Filtering options are quite limited. You can do joins, but that too is limited.

    Imagine I have three tables: patient, diagnosis and billing. I want to see the admission date and name (both stored in patient) of all patients that have a diagnosis of any kind (don't care what it is) and a billing account assigned to them (don't care what that is either, just want them to have one). The tables all share a patient_ID. I set an inner join to get them linked up. In my report I then only display data from patient, but my join is still relevant as a filter.

    Crystal query optimiser: "you don't use those other tables, do you? Let me cull that join.

    Aside from that it's a buggy p.o.s. but their optimising just blows my mind. You need to set flags all over the place to force joins or it just generates rubbish.

    Why would anyone use this shit in production anywhere?

  • SockDev

    @royal_poet said in Crystal Report Needs To Die:

    Why would anyone use this shit in production anywhere?

    because they have slick sales teams that convince management that their reports run so much better and faster than the competitors, and look, pie charts! in a report! oh by the way here's anotehr round of drinks! for you, our friend!

    and then us develoeprs get the shit shoved down our throat and just have to deal with it because the crystal report guys are sending the manager on another junket to the bahamas to learn how crystal reports can align his chakras for better chi balance or some shit.

  • Grade A Premium Asshole

    @royal_poet said in Crystal Reports Needs To Die:

    Why would anyone use this shit in production anywhere?

    Idiots who use PowerBuilder tend to favor Crystal Reports. It is all shit. Just piles of shit, placed on other piles of shit. Under that, more shit.

    It is shit all the way down.

  • @royal_poet Something tells me you're doing it wrong. The CR optimizer never does that to me. But maybe the difference is the SAP database drivers we use? I'm stuck on Advantage Database. 😞

  • I fucking hate Crystal Reports.

  • @royal_poet said in Crystal Reports Needs To Die:

    Why would anyone use this shit in production anywhere?

    Because it's made by SAP and as we know: the best-run businesses run SAP®.

    It says so right on the brochure, so it must be true.

  • Winner of the 2016 Presidential Election

    @Captain No SAP dB drivers. Interfacing with a MS SQL server here.

    It's a buggy piece of shit without that behaviour though. Another favourite of mine:

    Enter something into a data field at least I think that's what they are called which I guess is Crystals way of letting you have a bit of post processing on your db data like say cleaning out white space with a trim or writing a simple a if clause...

    Anyway, if you put any comments in your code and save it, the system will strip your comments or think your entire code is a comment and clip all of it. Of course at other times it works without a hitch. Just so irritating.

  • Impossible Mission Players - A

    One tactic I had to utilize in a previous vendor database that needed CR to do basically any reporting within the application was liberal creation of views to serve as query points for the CR report.

    Especially when we extended the vendor software with our own additional application to add necessary functionality. Any reporting that needed to cross the database barrier had to pull from a view in $VendorDB that joined in the necessary table(s) from our application's database.

    tl;dr: You might try creating a view in MS-SQL that does the joins you want and can take desired filtering parameters, and then pulling 100% of the results of that parameterized view into the CR report. Rather than trying to join and filter within CR.

    Disclaimer: YMMV, depending on how gnarly the join and filter are there may be performance implications to doing the join in a view.

Log in to reply

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.