This was a fun problem to solve :). The issue that I came across with this
error was that the database connection/password needed to be set for each
table in the main report as well as any subreports. If there were tables
with the connection information not set, the database login would be
displayed for each table with the missing information.
The code that I used to correct this problem is as follows:
If File.Exists(strReport) Then
Dim crlogInfo As New CrystalDecisions.Shared.TableLogOnInfo()
Dim crConnInfo As New CrystalDecisions.Shared.ConnectionInfo()
Dim intCount As Integer, intRecCount As Integer
Dim strTmp As String
m_crdocReport = New ReportDocument()
m_crdocReport.Load(strReport,
CrystalDecisions.Shared.OpenReportMethod.OpenRepor tByTempCopy)
'Set database for main tables
With crConnInfo
..ServerName = ""
..UserID = ""
..DatabaseName = strDataBasePath
..Password = "mypassword"
End With
crlogInfo.ConnectionInfo = crConnInfo
intRecCount = m_crdocReport.Database.Tables.Count - 1
For intCount = 0 To intRecCount
With m_crdocReport.Database.Tables(intCount)
..Location = strDataBasePath
..ApplyLogOnInfo(crlogInfo)
strTmp &= .Name & " - " & .Location & " : " &
..LogOnInfo.ConnectionInfo.Password & " : " &
crlogInfo.ConnectionInfo.Password & vbCrLf
End With
Next
'MsgBox(strTmp)
strTmp = ""
'Set database for any subreports
Dim crSection As Section
Dim crObject As ReportObject
Dim crSubReport As SubreportObject
Dim astrSubReports() As String
Dim intSubReports As Integer = -1, intSubReportCount As Integer
Dim crSubReportDocument As New ReportDocument()
For Each crSection In m_crdocReport.ReportDefinition.Sections
For Each crObject In crSection.ReportObjects
If crObject.Kind = ReportObjectKind.SubreportObject Then
crSubReport = CType(crObject, SubreportObject)
intSubReports += 1
ReDim Preserve astrSubReports(intSubReports)
astrSubReports(intSubReports) = crSubReport.SubreportName
End If
Next
Next
For intSubReportCount = 0 To intSubReports
crSubReportDocument =
m_crdocReport.OpenSubreport(astrSubReports(intSubR eportCount))
intRecCount = crSubReportDocument.Database.Tables.Count - 1
For intCount = 0 To intRecCount
With crSubReportDocument.Database.Tables(intCount)
..Location = strDataBasePath
..ApplyLogOnInfo(crlogInfo)
strTmp &= .Name & " - " & .Location & " : " &
..LogOnInfo.ConnectionInfo.Password & " : " &
crlogInfo.ConnectionInfo.Password & vbCrLf
End With
Next
'MsgBox(strTmp)
strTmp = ""
Next
Jody
"Mithun Verma" <mi*****@MAQSoftware.com> wrote in message
news:Oi*************@tk2msftngp13.phx.gbl...
Hello All,
I have a Windows application that uses Crystal Reports 9 (bundled Version)
developed using VS.NET 2003 on a windows server 2003 m/c.
The application has to be deployed on the client machine that has Windows
XP installed. Before deploying we make sure that .NET framework 1.1 is
installed on the XP machine. In the setup project, for support for Crystal
Reports, we have added the following merge modules:
1)Crystal_Managed2003.msm
2) Crystal_Database_Access2003.msm
3)Crystal_Database_Access2003_enu.msm
4)Crystal_RegWiz2003.msm
5)VC_User_CRT71_RTL_X86.msm
6)VC_User_STL71_RTL_X86.msm
The problem we are facing is like this: Whenever the user tries to pull up
the reports, a database logon screen pops up for the report. I am unable
to figure out as to why this is happening only for Crystal Reports. All the
other functionality in the application is working fine without having to
specify the database connection information interactively. The database
server is not in the same network as this Client WinXP machine. We specify
the IP address of the DB server in the DB connection string. Could this be
a problem?
If someone has faced this problem earlier or has any solution to this
problem, do let me know. I need to resolve this problem ASAP.
Thanks in advance
Mithun