Crystal Reports Problem: Please reply ASAP.

M

Mithun Verma

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
 
J

Jody Gelowitz

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.OpenReportByTempCopy)

'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(intSubReportCount))

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
 

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

Top