I don't know all of the details, but I get you started on the path. Change the report to OLE connection (use the database location and do lots of updates, the connection and each table or store proc). This doesn't bind to the ODBC driver, so the database is allowed to float.
I realize that it is not VB6 notation, but I sure that you can translate:
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table
With crConnectionInfo
.ServerName = SQLServer
.DatabaseName = Database
.UserID = DatabaseUser
.Password = DatabasePassword
End With
CrTables = report.Database.Tables
Try
For Each CrTable In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
If CrTable.TestConnectivity() Then
If CrTable.Location.IndexOf(".") > 0 Then
CrTable.Location = CrTable.Location.Substring(CrTable.Location.LastIndexOf(
".") + 1)
Else
CrTable.Location = CrTable.Location
End If
Else
MsgBox(
"Please Check Connection Settings", MsgBoxStyle.Critical, "Connection Error")
End If
Next
Catch ex As Exception
MsgBox(
"Please Check Connection Settings", MsgBoxStyle.Critical, "Connection Error")
End Try
HTH