I don't trust the code to correctly identify the path, though I don't have reason for this distrust other than alot of people trying it and posting questions.
An easier solution, is to change the values in the ODBC connection, or to change the connection to an OLE connection that you can change programatically, or better still, have the application get the data and then push it to the report. It may take time to implement/change the reports, but once done, you (and Crystal) don't have to worry about these issues. The data is always from the correct source, regardless of how many dbs you have or where they are located. The application controls where the data is generated from, which is much easier to maintain then all the different types of connections/location combinations and backends headaches are gone.
HTH