Actually I do like Crystal Reports. It may not be perfect but the way it works with datasets, its grouping a selecting options and the web report viewer are very workable. Deploying Crystal Report to a web server is another story.
When you test your app on your localhost all seems to be working well but when the app is installed on the webserver it produces the notorious Can not find KeycodeV2.dll, or invalid keycode error message. The Crystal site has loads on support on that which tells You to Update Some Registry That You Will NOT Find these Settings. What to do next is hidden a lot better in the docs.
The crystal viewer uses a couple of dll's which are installed on your development machine. They are part of CR for VS.NET but not of the .NET framework. If there is no vs.net installed on the webserver these files will be missing on the server. A deployment project in VS.NET will not see the dependencies and will not include them in the setup. What worked for me (destilled out of the loads of CR docs) was creating a setup project with a couple of merge modules
Crystal_Database_Access2003.msm Crystal_Database_Access2003_enu.msm Crystal_Managed2003.msm Crystal_regwiz2003.msm VC_User_CRT71_RTL_X86 _---. Msm (used for reports based on ADO.NET) VC_User_STL71_RTL_X86 _---. Msm (used for reports based on ADO.NET)
.
Installing this Dummy App Will Enable CR in One Server The Setup Was A Webapp, ON Another Server We Had to Create A Windows Forms Setup Before The Server Would See Cr.