My turn to ask a question!
Here's the background. Among my many duties, I'm a product manager for one of my companies' reporting solutions. Most of our standard reports (which I inherited) are written in CR8.5 and are accessed in a client-server application using the CR7 OCX. I believe the application was written in Delphi 5.
Since I'm the hoighty toighty Crystal Expert, I've undertaken a project to analyze our standard reports (which were originally written in Crystal 6) and to update them using functionality that is availble in CR 8.5, but still have them be compatible with our very old application (we are writing a web-based application that will use CRXI and Crystal Reports Server, btw).
One of my enhancements is to use of SQL Expression fields in the Record Selection Criteria in lieu of formulas. This makes the reports run much more efficiently because the SQL Expression can be passed to the database for processing, whereas the formulas cannot.
Herein lies the crux of my problem:
When I run a report in CR 8.5, the SQL Expression fields are passed to the DB for processing as expected. I see that 6 0f 6 records have been evaluated, for example. However, when I run the same report from within our application the viewer clearly shows the report reading 6 of 3000 records, which means that the part of the record selection criteria that uses the SQL Expression fields isn't being passed to the database for processing. The SQL Expression fields ARE recognized, else the report would fail, but are being filtered on the client after the fact.
I am not a progammer and I don't have access to the source code. Our application distributes a number of the runtime .dlls in an easily identifable folder, however. If I knew which .dll and/or registry key to update, then I could effectively use this functionality in our application.