We created a windows based application with Virsual studio 2010 & Crystal Report & NET Framework 4.
During
objRpt.SetDataSource(ds.Tables(0))
OutOfMemoryException was thrown . The table is too big. I saved DS to xml and tried to use RAS to SetTableLocation.
The code works fine on some projects but on the big one throwing an error out:
"Logon failed.
Error in File temp_1708867f-4479-4904-8666-456b84fa2d63 {CD095C31-6A80-4412-B4E2-C11B2DCDE359}.rpt:
Unable to connect: incorrect log on parameters."
I tried to use Replace Connection method (below) but it did not work for me.
"Error in File temp_...rpt:
Invalis section."
What am i doing wrong?
Please help. Thanks in advance
SetTableLocation code
Private Sub getXML(ByVal m_boReportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument, ByVal dtb As System.Data.DataTable)
Dim m_boReportClientDocument As ISCDReportClientDocument
m_boReportClientDocument = m_boReportDocument.ReportClientDocument
Dim m_boConnectionInfo As ConnectionInfo
Dim m_boAttributes As New PropertyBag()
Dim m_boLogonInfo As New PropertyBag()
Dim m_boTable As CrystalDecisions.ReportAppServer.DataDefModel.Table
Dim tempFileName = "c:\a.xml"
dtb.WriteXml(tempFileName, XmlWriteMode.WriteSchema)
m_boLogonInfo.Add("XML File Path", tempFileName)
m_boLogonInfo.Add("Internal Connection ID", "{680eee31-a16e-4f48-8efa-8765193dccdd}")
m_boAttributes.Add("QE_DatabaseName", "")
m_boAttributes.Add("Database DLL", "crdb_adoplus.dll")
m_boAttributes.Add("QE_DatabaseType", "ADO.NET (XML)")
m_boAttributes.Add("QE_ServerDescription", "NewDataSet")
m_boAttributes.Add("QE_LogonProperties", m_boLogonInfo)
m_boAttributes.Add("QE_SQLDB", "False")
m_boAttributes.Add("SSO Enabled", "False")
m_boConnectionInfo = New ConnectionInfo()
m_boConnectionInfo.Attributes = m_boAttributes
m_boConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE
Dim boTables As CrystalDecisions.ReportAppServer.DataDefModel.Tables
boTables = m_boReportClientDocument.DatabaseController.Database.Tables
m_boTable = New CrystalDecisions.ReportAppServer.DataDefModel.Table()
m_boTable.ConnectionInfo = m_boConnectionInfo
m_boTable.Name = dtb.TableName.ToString
m_boReportClientDocument.DatabaseController.SetTableLocation(boTables(0), m_boTable)
m_boReportClientDocument.VerifyDatabase()
End Sub
Replace Connection code:
Private Sub getXML1(ByVal m_boReportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument, ByVal dtb As System.Data.DataTable)
Dim m_boReportClientDocument As ISCDReportClientDocument
m_boReportClientDocument = m_boReportDocument.ReportClientDocument
Dim oldConnInfo As CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo
Dim oldConnInfos As CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfos
oldConnInfos = m_boReportClientDocument.DatabaseController.GetConnectionInfos(Nothing)
Dim m_boConnectionInfo As ConnectionInfo
Dim m_boAttributes As New PropertyBag()
Dim m_boLogonInfo As New PropertyBag()
Dim tempFileName = "c:\a.xml"
dtb.WriteXml(tempFileName, XmlWriteMode.WriteSchema)
m_boLogonInfo.Add("XML File Path", tempFileName)
m_boAttributes.Add("QE_DatabaseName", "")
m_boAttributes.Add("Database DLL", "crdb_adoplus.dll")
m_boAttributes.Add("QE_DatabaseType", "ADO.NET (XML)")
m_boAttributes.Add("QE_ServerDescription", "NewDataSet")
m_boAttributes.Add("QE_LogonProperties", m_boLogonInfo)
m_boAttributes.Add("QE_SQLDB", "False")
m_boAttributes.Add("SSO Enabled", "False")
m_boConnectionInfo = New ConnectionInfo()
m_boConnectionInfo.Attributes = m_boAttributes
m_boConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE
For I As Integer = 0 To oldConnInfos.Count - 1
oldConnInfo = oldConnInfos(I)
m_boReportClientDocument.DatabaseController.ReplaceConnection(oldConnInfo, m_boConnectionInfo, Nothing, CrystalDecisions.ReportAppServer.DataDefModel.CrDBOptionsEnum.crDBOptionDoNotVerifyDB)
Next
End Sub