I don't know if this will work for you, but the way that we get around the whole issue of connection strings is to have our app gather the data and then set the datasource in the report to the dataset the app created. We use the ado.net connection type, which is an XML file basically.
We are using a console app, but the solution is the same. The app can be dynamic in its connection, but Crystal doesn't care about where the data came from, just that it is there.
Make sense? I've been really happy since we changed to this format, as I no longer have to track down the wrong data being pulled due to a bad connection.