Search code examples
vb.netcrystal-reportswindows

how to pass logon informations to the standalone crystal Report?


I am using Standalone crystal report in my project which is in windows application. Here i want to pass the logon credentials. the following code am using.

Private Sub cmd_print_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_print.Click
        Dim strConnection As String = "..."
        Dim cr As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        Dim strReportPath As String = "d:\ReportFtLabel.rpt"
        cr.Load(strReportPath)

        Dim ConnectInfo As New CrystalDecisions.Shared.ConnectionInfo
        With ConnectInfo
            .ServerName = "RRRR"
            .DatabaseName = "RRRR"
            .UserID = "XXXX"
            .Password = "XXXX"
        End With

        For Each Table As CrystalDecisions.CrystalReports.Engine.Table In cr.Database.Tables
            Dim LogOnInfo As CrystalDecisions.Shared.TableLogOnInfo

            LogOnInfo = Table.LogOnInfo
            LogOnInfo.ConnectionInfo = ConnectInfo
            Table.ApplyLogOnInfo(LogOnInfo)
        Next

        objSCIP_ml = New SCIP_ml
        objSCIP_bll = New scip_bll
        Dim DS As New DataSet
        DS = objSCIP_bll.bll_GetHandShake(objSCIP_ml)
        If Not DS Is Nothing Then
            cr.Load(strReportPath)
            cr.SetDataSource(DS)
            CrystalReportViewer1.ReportSource = cr
            CrystalReportViewer1.Refresh()
        End If
        DS = Nothing
        objSCIP_ml = Nothing
        objSCIP_bll = Nothing
    End Sub

But it throws the following error.

error

somewhere i am missing to pass the logon information... Any suggestions and solutions is very much appreciated. Thanks in advance.


Solution

  • you can add it to your App config as keys like:

        <add key="ServerName" value="RRRR"/>
        <add key="DataBaseName" value="RRRR"/>
        <add key="DatabaseUser" value="XXXX"/>
        <add key="DatabasePassword" value="XXXX"/>
    

    and call them in your code like:

        Dim SERVER_NAME As String = ConfigurationManager.AppSettings("ServerName").ToString()
        Dim DATABASE_NAME As String = ConfigurationManager.AppSettings("DataBaseName").ToString()
        Dim DatabaseUser As String = ConfigurationManager.AppSettings("DatabaseUser").ToString()
        Dim DatabasePassword As String = ConfigurationManager.AppSettings("DatabasePassword").ToString()
        .UserID = "XXXX"
        .Password = "XXXX"