Информация о входе в систему Crystal для подотчета

У меня есть кристаллический отчет в Visual Studio, в котором есть дополнительный отчет. Я могу передать учетные данные для основного отчета, но не для подотчета. Мне предлагается ввести пароль для подотчета. Как я могу передать учетные данные для основного отчета и подотчета? Они тянут из разных баз данных, но с одного сервера.

Я использую следующий код для входа в основной отчет:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        Dim cryRpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        Dim crtableLogoninfos As New TableLogOnInfos
        Dim crtableLogoninfo As New TableLogOnInfo
        Dim crConnectionInfo As New ConnectionInfo
        Dim CrTables As CrystalDecisions.CrystalReports.Engine.Tables
        Dim CrTable As CrystalDecisions.CrystalReports.Engine.Table

        cryRpt.Load("\\Server\reportPath\report.rpt")
        CrystalReportViewer1.ReportSource = cryRpt
        With crConnectionInfo
            .ServerName = "Server"
            .DatabaseName = "MainDatabase"
            .UserID = "User"
            .Password = "Password!"
        End With
        CrTables = cryRpt.Database.Tables
        For Each CrTable In CrTables
            crtableLogoninfo = CrTable.LogOnInfo
            crtableLogoninfo.ConnectionInfo = crConnectionInfo
            CrTable.ApplyLogOnInfo(crtableLogoninfo)
            CrTable.TestConnectivity()
        Next
    Catch ex As Exception
        MsgBox("You cannot Connect to the Database")

    End Try
End Sub

У меня запрашиваются параметры, которые я установил, и после прохождения этих выборов запрашивается информация для входа в дополнительный отчет и требуется пароль. Я хотел бы передать это автоматически без ввода пользователя.


person LastSparton    schedule 18.05.2016    source источник


Ответы (1)


Для всех, кто сталкивается с этой проблемой, я опубликую то, что мы с коллегой нашли и выяснили. Важно отметить, что вы должны закодировать информацию вложенного отчета, ДО того, как вы закодируете основные учетные данные отчета:

Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class VndPerfReport
 Private Sub ApplyNewServer(ByVal report As ReportDocument)

    For Each subReport As ReportDocument In report.Subreports
        For Each crTable As Table In subReport.Database.Tables
            Dim loi As TableLogOnInfo = crTable.LogOnInfo
            loi.ConnectionInfo.ServerName = "Servername"

            loi.ConnectionInfo.UserID = "User"
            loi.ConnectionInfo.Password = "Password"

            crTable.ApplyLogOnInfo(loi)
        Next
    Next
    'Loop through each table in the report and apply the new login 
    For Each crTable As Table In report.Database.Tables
        Dim loi As TableLogOnInfo = crTable.LogOnInfo
        loi.ConnectionInfo.ServerName = "Servername"

        loi.ConnectionInfo.UserID = "User"
        loi.ConnectionInfo.Password = "Password"

        crTable.ApplyLogOnInfo(loi)
        'If your DatabaseName is changing at runtime, specify the table location. 
        'crTable.Location = ci.DatabaseName & ".dbo." & crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1)
    Next
 End Sub

 Private Sub VndPerfReport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ApplyNewServer(CrystalReportViewer1.ReportSource)
 End Sub
End Class
person LastSparton    schedule 18.05.2016