In VB6, we use something like the following (dirty copy-paste, old code, incrementally updated from CR6 to CR9), maybe you can get some ideas:
For Each tmpTable In Report.Database.Tables Set CPProperties = tmpTable.ConnectionProperties CPProperties.DeleteAll CPProperties.Add "Provider", "SQLOLEDB" CPProperties.Add "Data Source", mServerName CPProperties.Add "Initial Catalog", mBaseName CPProperties.Add "User ID", mUserID CPProperties.Add "Password", mPassword CPProperties.Add "Server Name", mServerName CPProperties.Add "Server Type", "OLEDB" CPProperties.Add "DataBase", mBaseName tmpTable.SetTableLocation tmpTable.Location, "", "" Next tmpTable For Each tmpSection In Report.Sections For Each tmpObject In tmpSection.ReportObjects If TypeName(tmpObject) = "ISubreportObject" Then Set tmpReport = tmpObject.OpenSubreport() For Each tmpTable In tmpReport.Database.Tables Set CPProperties = tmpTable.ConnectionProperties CPProperties.DeleteAll CPProperties.Add "Provider", "SQLOLEDB" CPProperties.Add "Data Source", mServerName CPProperties.Add "Initial Catalog", mBaseName CPProperties.Add "User ID", mUserID CPProperties.Add "Password", mPassword CPProperties.Add "Server Name", mServerName CPProperties.Add "Server Type", "OLEDB" CPProperties.Add "DataBase", mBaseName tmpTable.SetTableLocation tmpTable.Location, "", "" Next tmpTable End If Next tmpObject Next tmpSection
source share