Login Failed in Crystal Report with Sub Report and each with 2 Connections

A

Ashish Mehndi

I have created a Report with a Subreport and both have 2 connection
informations. Viz. Main Report has 2 connection - 1 connection to
datasource using Stored Procedure (SQL Server) and second connection to
datasource which provides fields based upon Language selected say
english, spanish etc. so we have one seprate Language Database. Similar
is the case with Sub Report. Now when I am passing the connection info
as shown below in Steps to Reproduce, then 1st page gets displayed
perfectly but clicking on the second page gives the Login Failed Error,
but if i have only 1 connection in both main report and sub report the
same code works fine. Is there any resolution to this???


ERROR____________________________________________________________-
Server Error in '/Reports' Application.
------------------------------------------------------------------------
--------

Logon failed. Details: 28000:[Microsoft][ODBC SQL Server Driver][SQL
Server]Login failed for user 'demodb_cds'. Error in File
C:\WINDOWS\TEMP\{6384703C-1EDA-4AA8-95CF-84C30EB995E8}.rpt: Unable to
connect: incorrect log on parameters.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Logon
failed. Details: 28000:[Microsoft][ODBC SQL Server Driver][SQL
Server]Login failed for user 'demodb_cds'. Error in File
C:\WINDOWS\TEMP\{6384703C-1EDA-4AA8-95CF-84C30EB995E8}.rpt: Unable to
connect: incorrect log on parameters.

Source Error:

An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:


[COMException (0x8004100f): Logon failed.
Details: 28000:[Microsoft][ODBC SQL Server Driver][SQL Server]Login
failed for user 'demodb_cds'.
Error in File
C:\WINDOWS\TEMP\{6384703C-1EDA-4AA8-95CF-84C30EB995E8}.rpt:
Unable to connect: incorrect log on parameters.]
CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetPage(P
ageRequestContext pPageRequestContext) +0
CrystalDecisions.ReportSource.EromReportSourceBase.GetPage(PageRequestCo
ntext pageReqContext)

[LogOnException: Logon failed.
Details: 28000:[Microsoft][ODBC SQL Server Driver][SQL Server]Login
failed for user 'demodb_cds'.
Error in File
C:\WINDOWS\TEMP\{6384703C-1EDA-4AA8-95CF-84C30EB995E8}.rpt:
Unable to connect: incorrect log on parameters.]
CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetExceptio
n(Exception e)
CrystalDecisions.ReportSource.EromReportSourceBase.GetPage(PageRequestCo
ntext pageReqContext)
CrystalDecisions.CrystalReports.Engine.FormatEngine.GetPage(PageRequestC
ontext reqContext)
CrystalDecisions.ReportSource.LocalReportSourceBase.GetPage(PageRequestC
ontext pageReqContext)
CrystalDecisions.Web.ReportAgent.(Boolean i)
CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs e)
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Page.ProcessRequestMain()


CODE___________________________________________________________________
Page_Init()

If TypeOf Session.Item("CESession") Is Object Then
ceSession = Session.Item("CESession")
Else
If LoginCrystalEnterprise(ConfigurationSettings.AppSettings("Username"),
ConfigurationSettings.AppSettings("Password"),
ConfigurationSettings.AppSettings("CmsServer"),
ConfigurationSettings.AppSettings("AuthenticationType")) Then
ceSession = Session.Item("CESession")
End If
End If

reportDoc.EnterpriseSession = ceSession
reportDoc.FileName = ConfigurationSettings.AppSettings("Uri") &
GetReportId(reportSource, reportDoc.EnterpriseLogonInfo.Username,
reportDoc.EnterpriseLogonInfo.Password,
reportDoc.EnterpriseLogonInfo.CmsServer,
reportDoc.EnterpriseLogonInfo.AuthenticationType)

Call CreateParameterFieldsDirect(returnParameters, reportDoc)

For Each objSection In reportDoc.ReportDefinition.Sections
For Each objReportObject In objSection.ReportObjects
If objReportObject.Kind = ReportObjectKind.SubreportObject Then
Dim objDatabaseSubreport As
CrystalDecisions.CrystalReports.Engine.Database
Dim objTablesSubreport As CrystalDecisions.CrystalReports.Engine.Tables
Dim objTableLogonInfoSubreport As CrystalDecisions.Shared.TableLogOnInfo
Dim objTableSubreport As CrystalDecisions.CrystalReports.Engine.Table
Dim objCrystalConnectionInfoSubreport As CrystalConnectionInformation

Try
objSubReportObject = CType(objReportObject, SubreportObject)
subreportDoc =
objSubReportObject.OpenSubreport(objSubReportObject.SubreportName)
objDatabaseSubreport = subreportDoc.Database
objTablesSubreport = objDatabaseSubreport.Tables
For Each objTableSubreport In objTablesSubreport
objTableLogonInfoSubreport = objTableSubreport.LogOnInfo
objCrystalConnectionInfoSubreport =
objHashTable.Item(objTableSubreport.Name.ToLower)
Dim objConnectionInfoSubreport As New
CrystalDecisions.Shared.ConnectionInfo
objConnectionInfoSubreport.ServerName =
objCrystalConnectionInfoSubreport.ServerName
objConnectionInfoSubreport.UserID =
objCrystalConnectionInfoSubreport.UserId
objConnectionInfoSubreport.DatabaseName =
objCrystalConnectionInfoSubreport.DatabaseName
objConnectionInfoSubreport.Password =
objCrystalConnectionInfoSubreport.Password
objTableLogonInfoSubreport.ConnectionInfo = objConnectionInfoSubreport
System.Threading.Thread.CurrentThread.Sleep(waitTime)
objTableSubreport.ApplyLogOnInfo(objTableLogonInfoSubreport)
System.Threading.Thread.CurrentThread.Sleep(waitTime)
'intCounter = 0
'objTableSubreport.ApplyLogOnInfo(objTableLogonInfoSubreport)
'System.Threading.Thread.CurrentThread.Sleep(waitTime)
'While (Not objTableSubreport.TestConnectivity()) And (intCounter <
ConfigurationSettings.AppSettings("maxConnectionCounter"))
'System.Threading.Thread.CurrentThread.Sleep(waitTime)
'intCounter += 1
'End While

If Not objTableSubreport.TestConnectivity() Then
Throw New ApplicationException("Unable to Connect Table:" &
objTableSubreport.Name & " Connection Info:" &
objConnectionInfoSubreport.ServerName)
End If
Next
Finally
objDatabaseSubreport = Nothing
objTablesSubreport = Nothing
objTableLogonInfoSubreport = Nothing
objTableSubreport = Nothing
objCrystalConnectionInfoSubreport = Nothing
End Try
End If
Next
Next

objDatabase = reportDoc.Database
objTables = objDatabase.Tables

For Each objTable In objTables
objTableLogonInfo = objTable.LogOnInfo
objCrystalConnectionInfo = objHashTable.Item(objTable.Name.ToLower)
Dim objConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo
objConnectionInfo.ServerName = objCrystalConnectionInfo.ServerName
objConnectionInfo.UserID = objCrystalConnectionInfo.UserId
objConnectionInfo.DatabaseName = objCrystalConnectionInfo.DatabaseName
objConnectionInfo.Password = objCrystalConnectionInfo.Password
objTableLogonInfo.ConnectionInfo = objConnectionInfo
System.Threading.Thread.CurrentThread.Sleep(waitTime)
objTable.ApplyLogOnInfo(objTableLogonInfo)
System.Threading.Thread.CurrentThread.Sleep(waitTime)
intCounter = 0
'objTable.ApplyLogOnInfo(objTableLogonInfo)
'System.Threading.Thread.CurrentThread.Sleep(waitTime)
'While (Not objTable.TestConnectivity()) And (intCounter <
ConfigurationSettings.AppSettings("maxConnectionCounter"))
'System.Threading.Thread.CurrentThread.Sleep(waitTime)
'intCounter += 1
'End While

If Not objTable.TestConnectivity() Then
Throw New ApplicationException("Unable to Connect Table:" &
objTable.Name & " Connection Info:" & objConnectionInfo.ServerName)
End If
Next

crystalReportViewer.DataBind()
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top