Crystal Reports

An indescribable evil foisted on programmers under the guise of "easy reporting".

 It also fits the requirements for a CareerLanguage.

More discussions moved to the end of page

The reporting tool (one of the earliest VisualBasicTools) was acquired by BusinessObjects in mid 2003, and the new owner planned to merge the functionalities with its high end BusinessIntelligence? software by end 2005. See

Crystal Resources on the Web

Learning Crystal Reports

Please list good resources (including books if you have read them) that are good to help beginners to gain proficiency (to intermediate skill level) quickly. Target version is Crystal 9 --dl DeleteWhenCooked

Crystal Versions

Version 4.6 Version bundled with VbClassic version 5/6

Version 5+ conditional formatting, multiple sections, subreports

Version 7 An addon called Report Design Component (RDC) first got introduced. Also a precursor to Crystal Enterprise, called Web Component Server (WCS), was made available.

Version 8 Emergence of the Report Designer Component. Allow control structures in formulae, cross tab, charts

Version 8.5 New product Crystal Enterprise, WCS dropped from product line. Has alerts and PDF exports

Version 9 mid 2002 version now has a repository, but dropped compiled reports see;jsessionid=G0EJVFB0CDTKAQSNDBCCKHQ?article=/021030/517products1_1.jhtml reported to be much slower at now can process SQL commands directly

Report Application Server (RAS), a java based tool, now introduced as an entry level stepping stone for the larger Crystal Enterprise server based solution. Previous free entry tool was called Crystal Enterprise Standard.

Version 10 ?Jan 2004 version that has better Enterprise (Java engine) and DotNet capabilities

Report Desginer Component (RDC)

Information on this is scattered throughout the page, here are some additional information.

Crystal Enterprise

This web based solution, available since 8.5 separately, moved processing load to dedicated report server and has in addition, scheduling capabilities.

It also provide better scalability through economizing scarce resources such as database connections.

Crystal Enterprise was a "free" addon to Crystal 8.5. It now has a professional edition that has security features (e.g. LDAP based) , and is priced for customers with deep pockets.


Data access

In the case of ActivexDataObject (ADO), Crystal require data source that can be scrolled in both directions. However we open our recordsets using forward and readonly cursor option. Therefore we need an intermediary inmemory datasource to hold the entire contents of the recordset, and use that as a feed to CrystalReports.

Reports for the Web

Vendor recommend use of RAS (Enterprise Report Application Server). see link above

Crystal can also be used to create report in HTML format, to be served to the web browser. This mechanism lacks the advanced features (e.g. drill down) made possible through use of RAS or RDC.

Deployment: setup and licensing see

Simple ASP alternative to Crystal. see

Stream CR output to PDF for web consumption see

Active Reports as an alternative to Crystal. see

Report Application Server (RAS)


Reports for Client Server Applications

Use RDC (Report Designer Component). It has facilities not in the RAS. Uses the ComponentObjectModel approach to integrating reporting functions with application logic. Using RDC, reports can now be directly created and manipulated within the host language IDE (e.g. VbClassic).

An introduction to RDC is available at

Reports for Services and Xml type applications

See vendors own material at

Web service and Crystal Enterprise. see

I hear there were severe limitations (e.g. size of strings) that exist in earlier versions. Problems now resolved?

Versions prior to CR9 has this problem. See

Reports for VbClassic

With VbClassic, RDC incorporates the automatic code completion. The Activex designer within the RDC extends the VbClassic IDE through facilities such as User Connection and Data Environment designers. Also the VbClassic code has access to manipulating properties for report objects at finer level of granularity (eg. programatic setting of formula for text object within Vb)

Reports for VbDotNet

A tailored version (based on Version 8/8.5) is included for VS.NET. This is described at However it appears that this has been superseded by Crystal version 10

Also there have been reports that the .NET version is incomplete without COM objects (see and also at one time was incompatible with a version 9 enterprise server (see

It was reported that DotNet 2003 comes with Crystal v10. See The above was disputed by Brian Bishop, an author of Crystal books, he said it (VS2003) comes with a modified version of Crystal 9.

Simple setup example refer to

If Crystal 9 is installed over Crystal Reports.Net some dll errors can occur. See a discussion at

Wrox (acquired by Wiley) has a forum on development of crystal reports at

Microsoft has some documentation on DotNet version of crystal at

Older and Superseded components

CRPE (Crystal Reports Programming Engine) API. A powerful low level interface discarded in CR9 Crystal OCX. RDC is the replacement for this tool which worked for 16bit windows as well.

Crystal Data Object (CDO)

This could be on the way out. But I have seen it listed as a datasource in the two definitive CR9 books of "Mastering ..." and "...Complete Reference".

It is supposedly a very powerful means to source data (e.g. from ComponentObjectModel objects that interrogates the active directory).

Vendor has a RDC usage sample at

More vendor CDO material can be located with this search link

Upgrade to CR9 from 8.5

We have set up a new machine with Crystal 9, and put VbClassic on. Problem is we quickly find that the existing VB projects with Crystal 8.5 reports not work, even after the project reference is changed to using the new library.

A solution was found later by hacking the visual basic form files directly. We took a look at a form that uses the new CR9 format, and change the references in all the forms that refer to older control names.

The new crystal 9 uses different Dlls, and the names for the interfaces within the DLLs have changed as well.

 also check for info

Upgrade Crystal.NET 8.5 to 10


Deployment of Crystal

Even after licensing issues have been addressed by the company lawyer, deployment of CrystalReports can be painful.

I have seen a remark made that for Web applications, consider Crystal Enterprise as the deployment mechanism.

For Client Server apps, check out

User experience discussions

Upgrades can be painful

See for example,

Does not meet all user needs for reporting

I have yet to find a project that CrystalReports could handle all the reports for. I've always had to use CrystalReports with another reporting system, or roll my own reports altogether.

The problem is that it is fragile. If you want to do what it does nicely, you are fine. However, if you want to doing something slightly different, you can't modify or subclass Crystal Reports. Instead you have to abandon it altogether for another program (either another commercial one, or one you wrote yourself).

Reporting seems to be a good area in which to demonstrate the power of well-written and exposed object-oriented software, so why is CrystalReports the dominant player?

Because it ships free with VB?

An open-ended report writer is something that would be tough to design in my opinion. You may need to mix flow-based (nested) layouts with positional layouts. If you can stick with one or the other, it is relatively easy. But, if you want to make it handle both, you are a genius if you can pull it off.

What are some specific things which CrystalReports cannot handle?

Most of the problems I have seen are trying to use it to do complex calculations or pre-processing. Use a real programming language for that, and let Crystal be a mere formatting tool.

Indeed. It is not meant to be a programming language, nor should it. But, are there any common formatting tasks that have caused trouble?


Security risks

See CrystalReportsAlternatives

EditText of this page (last edited June 27, 2006) or FindPage with title or text search