There are also a couple of things to look at that force Crystal to load data into memory and work on it there instead of pushing the work to the database. These things include:
- Linking multiple commands as if they were tables. Instead, create a single command that pulls all of the data.
- Using the Select Expert to set the filter when using commands. Instead, create any parameters in the Command Editor and do the filtering in the command.
- Using Crystal functions in the Select Expert. Instead, find a way to do this using a command or a SQL Expression.
- Using subreports that are at the Details level of the report or that get run frequently during a large report. There are a number of potential ways to get around this, but if you can't, look at the best practices I've listed above and that Sastry has listed in his post.
- Using "page N of M" or "TotalPages" in your report. This means that Crystal has to render ALL of the pages before showing anything. If you have subreports, this is especially memory intensive. I avoid using them whenever possible.
-Dell
Edited by hilfy - 03 Dec 2012 at 5:47am