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 Cannot find KeycodeV2.dll, or invalid keycode error message. The Crystal site has loads on support on that which tells you to update some registry settings. There is a big chance 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)
The regwiz module has an License key property, here you enter the Crystal license key found in the help about of VS.NET. It will read something like AAP50-GS00000-U7000RN.
Installing this dummy app will enable CR in all your webservers applications. On one server the setup was a webapp, on another server we had to create a Windows forms setup before the server would see CR.
Blog on, Peter