Crystal reports will try to convert a simple record selection formula to a WHERE clause and send it to the database. However if you are using specific crystal reports functions in the record selection formula it will be very likely that Crystal will send a flat SQL without a WHERE clause to the database, retrieve all the possible records and filter them locally evaluating the record selection formula for each of the records. This might be very slow process and as far as I understand is exactly what you are trying to avoid.
I would do what pmax999 is proposing , but using a command. The command will be executed on the database side and will always return filtered data.
A command for SQL SERVER and string parameters may look like this :
SELECT a,b,c ... FROM tablename
WHERE
1 = CASE WHEN {?parameter1}+{?parameter1}+...{?parameterN} ='' THEN 0 ELSE 1 END
AND
(
X like '%' + {?parameter1} '%'
OR Y like '%' + {?parameter2} '%'
OR ...
OR Z like '%' + {?parameterN} '%'
)
Viewer, scheduler and report manager for Crystal reports and SSRS.
Send your report everywhere.