I'm having the similar error.
I'm using report (CR 9.1.5000) with pull model and it is still connecting to wrong database (where it has been created). I'm changing the datasource at runtime, but I am still getting error!
What can be wrong?
Any help would be greatly appreciated.
The code:
Public Shared Sub UpdateLogonInfo(ByRef RepDoc As ReportDocument, ByVal DBProvider As DataProvider)
Dim cni As New CrystalDecisions.Shared.ConnectionInfo
Dim tli As New CrystalDecisions.Shared.TableLogOnInfo
Dim crSecs As Sections
Dim crSec As Section
Dim crRepObjs As ReportObjects
Dim crSubRepObj As SubreportObject
Dim crSubReport As ReportDocument
Dim i As Integer, j As Integer
RepDoc.ReportOptions.EnableSaveDataWithReport = False
cni.DatabaseName = DBProvider.DataBase
cni.ServerName = DBProvider.ServerName
cni.UserID = DBProvider.UserID
cni.Password = DBProvider.Password
' Updating Database Logon Information
RepDoc.SetDatabaseLogon(cni.UserID, cni.Password, cni.ServerName, cni.DatabaseName)
' Updating Tables Logon Information
For Each tbl As CrystalDecisions.CrystalReports.Engine.Table In RepDoc.Database.Tables
tli = tbl.LogOnInfo
tli.ConnectionInfo = cni
tbl.ApplyLogOnInfo(tli)
If (tbl.Location <> cni.DatabaseName & ".dbo." & tbl.Name) Then
tbl.Location = cni.DatabaseName & ".dbo." & tbl.Name
End If
Next
' Updating Subreports Tables Logon Information
crSecs = RepDoc.ReportDefinition.Sections
For i = 0 To crSecs.Count - 1
crSec = crSecs.Item(i)
crRepObjs = crSec.ReportObjects
For j = 0 To crRepObjs.Count - 1
If crRepObjs.Item(j).Kind = ReportObjectKind.SubreportObject Then
crSubRepObj = RepDoc.ReportDefinition.ReportObjects.Item(crRepOb
js.Item(j).Name)
crSubReport = RepDoc.OpenSubreport(crSubRepObj.SubreportName)
For Each tbl As CrystalDecisions.CrystalReports.Engine.Table In crSubReport.Database.Tables
tli = tbl.LogOnInfo
tli.ConnectionInfo = cni
tbl.ApplyLogOnInfo(tli)
If (tbl.Location <> cni.DatabaseName & ".dbo." & tbl.Name) Then
tbl.Location = cni.DatabaseName & ".dbo." & tbl.Name
End If
Next
End If
Next
Next
End Sub