Torna al Thread
' Variabili
Dim result As ReportDocument
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim rptname As String
Dim rd As ReportDocument
Dim ro As ReportObject
Dim sro As SubreportObject
Dim sect As Section
Dim table As Table
Dim tloinfo As TableLogOnInfo
Dim cinfo As ConnectionInfo
...
' Caricamento rpt
rptname = data.P_RptFileName ' data è il mio oggetto "contenitore" dati...
result = New ReportDocument()
result.Load(rptname, OpenReportMethod.OpenReportByDefault)
result.Refresh()
...
' Informazioni di log on
cinfo = New ConnectionInfo()
'cinfo.Type = ConnectionInfoType.CRQE
cinfo.ServerName = data.P_ServerName
cinfo.DatabaseName = data.P_DbName
cinfo.UserID = data.P_UserId
cinfo.Password = data.P_Pwd
'cinfo.IntegratedSecurity = True
...
' Applicazione info log on su tutte le tabelle del report
For i = 0 To result.Database.Tables.Count - 1
s = result.ReportClientDocument.DataDefController.Database.Tables.Item(i).QualifiedName
table = result.Database.Tables.Item(i)
tloinfo = table.LogOnInfo
tloinfo.ConnectionInfo = cinfo
tloinfo.TableName = s
table.ApplyLogOnInfo(tloinfo)
table.Location = s
Next
...
' Applicazione info log on su tutte le tabelle dei subreport
For Each sect In result.ReportDefinition.Sections
For Each ro In sect.ReportObjects
With ro
If .Kind = ReportObjectKind.SubreportObject Then
sro = DirectCast(ro, SubreportObject)
rd = sro.OpenSubreport(sro.SubreportName)
For i = 0 To rd.Database.Tables.Count - 1
's = rd.ReportClientDocument.DataDefController.Database.Tables.Item(i).QualifiedName
table = rd.Database.Tables.Item(i)
s = table.Name
' Forzatura per caso particolare
If s.StartsWith("IMAGES_RPT") Then
s = "XXXX." & s
End If
tloinfo = table.LogOnInfo
tloinfo.ConnectionInfo = cinfo
tloinfo.TableName = s
table.ApplyLogOnInfo(tloinfo)
table.Location = s
Next
End If
End With
Next
Next
...