Symptom
When attempting to use the navigation button in the Crystal Report Viewer in a Visual Studio .NET Web application the following error message appears:
"Rereading the Database"
Cause
This error message appears because the report should be loaded in the page init () instead of page load() and we need to load the report in next web forms using Session object.
Resolution
To resolve this error message, perform the following code:
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class WebForm1
Inherits System.Web.UI.Page
Dim report As New ReportDocument
Dim crDatabase As Database
Dim crTables As Tables
Dim crTable As Table
Dim crTableLogOnInfo As TableLogOnInfo
Dim crConnectionInfo As ConnectionInfo
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
report.Load("C:\Inetpub\wwwroot\cust_app\CrystalReport1.rpt")
report_logon("pubs", "sa", ".", "sa")
param("ord", 2)
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = "C:\exported.pdf"
crExportOptions = report.ExportOptions
With crExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
report.Export()
CrystalReportViewer1.ReportSource = report
End Sub
Public Sub report_logon(ByVal dbase As String, ByVal pwd As String, ByVal server As String, ByVal uid As String)
crConnectionInfo = New ConnectionInfo
With crConnectionInfo
.DatabaseName = dbase
.Password = pwd
.ServerName = server
.UserID = uid
End With
crDatabase = report.Database
crTables = crDatabase.Tables
For Each crTable In crTables
crTableLogOnInfo = crTable.LogOnInfo
crTableLogOnInfo.ConnectionInfo = crConnectionInfo
crTable.ApplyLogOnInfo(crTableLogOnInfo)
Next
End Sub
Public Sub param(ByVal paramname As String, ByVal paramvalue As Object)
crParameterFieldDefinitions = report.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item(paramname)
crParameterValues = crParameterFieldDefinition.CurrentValues
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = paramvalue
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
"Load the report on the next page using session object"
Page_init()
Initialize component ()
Session("crReportDocument")= new reportdocument
Session("crReportDocument").load("c:\report1.rpt")
End sub
Page_load()
CrystalReportviewer1.reportsource= session ("crReportDocument")
This will resolve the issue.
Keywords
rereading the database , KBA , BI-RA-CR , Crystal Reports designer or Business View Manager , How To