By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,483 Members | 3,261 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,483 IT Pros & Developers. It's quick & easy.

Unable to export Crystal report containing subreports

P: n/a
I have written an ASP/VB.Net application via VS 2003 (Crystal V9) that
uses MS Access 2000 as its database. I can export reports that have no
linked sub reports for printing. However, I'm unable to export reports
that have linked subreports. I receive (a "Missing parameter field
current value") on the following statement:

Me.crReportDocument.Export()

The main report requires 4 parameters. The linked reports do not
require any parameters other than the linking field.
Any suggestions/help appreciated.
Complete Code Listing:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Configuration.ConfigurationSettings
Public Class frmRptMPLCounty
Inherits System.Web.UI.Page

Public InternalOnly
Public CompFromDate
Public CompToDate
Public RptType

'CR Variables
Dim crParameterFields As ParameterFields
Dim crParameterField As ParameterField
Dim crParameterDiscreteValue As ParameterDiscreteValue

Dim crReportDocument As rptMasterPolicyListingCounty
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
Dim crSections As Sections
Dim crSection As Section
Dim crReportObjects As ReportObjects
Dim crReportObject As ReportObject
Dim crSubreportObject As SubreportObject
Dim subRepDoc As New ReportDocument

Dim Fname As String

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
'Populate report parameters
InternalOnly = Session("InternalOnly")
CompFromDate = Session("CompFromDate")
CompToDate = Session("CompToDate")
RptType = Session("RptType")
'Create an instance of the strongly-typed report object
crReportDocument = New rptMasterPolicyListingCounty

'Set the Report's SQL Connection
Me.SetSQLConnection()

'Create a new instance of a discrete parameter object to set the
first value for the parameter.
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = InternalOnly

'Define the parameter field to pass the parameter values to.
crParameterField = New ParameterField
crParameterField.ParameterFieldName = "InternalOnly"
'Pass the first value to the discrete parameter
crParameterField.CurrentValues.Add(crParameterDisc reteValue)

'Create an instance of the parameter fields collection, and pass
the discrete parameter with the discrete value to the
'collection of parameter fields.
crParameterFields = New ParameterFields
crParameterFields.Add(crParameterField)
'Create a new instance of a discrete parameter object to set the
first value for the parameter.
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = CompFromDate

'Define the parameter field to pass the parameter values to.
crParameterField = New ParameterField
crParameterField.ParameterFieldName = "CompFromDate"
'Pass the first value to the discrete parameter
crParameterField.CurrentValues.Add(crParameterDisc reteValue)

crParameterFields.Add(crParameterField)

'Create a new instance of a discrete parameter object to set the
first value for the parameter.
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = CompToDate

'Define the parameter field to pass the parameter values to.
crParameterField = New ParameterField
crParameterField.ParameterFieldName = "CompToDate"
'Pass the first value to the discrete parameter
crParameterField.CurrentValues.Add(crParameterDisc reteValue)

crParameterFields.Add(crParameterField)
'Create a new instance of a discrete parameter object to set the
first value for the parameter.
crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = RptType

'Define the parameter field to pass the parameter values to.
crParameterField = New ParameterField
crParameterField.ParameterFieldName = "RptType"
'Pass the first value to the discrete parameter
crParameterField.CurrentValues.Add(crParameterDisc reteValue)

crParameterFields.Add(crParameterField)
'The collection of parameter fields must be set to the viewer
CrystalReportViewer1.ParameterFieldInfo = crParameterFields

'Set the viewer to the report object to be previewed. This
'must be done after the parameter information has been set.
Me.CrystalReportViewer1.ReportSource = crReportDocument

'Refresh the report to ensure that the report retreives current
db info
Me.CrystalReportViewer1.RefreshReport()
End Sub

Private Sub btnPrint_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnPrint.Click
'Setup report parameter fields
Dim pFldDefs As ParameterFieldDefinitions
Dim pFldDef As ParameterFieldDefinition
Dim pValues As ParameterValues
Dim pDisValue As ParameterDiscreteValue
pFldDefs = crReportDocument.DataDefinition.ParameterFields

'Set the Report parameter
pFldDef = pFldDefs.Item("InternalOnly")
pValues = pFldDef.CurrentValues
pDisValue = New ParameterDiscreteValue
pDisValue.Value = Me.InternalOnly
pValues.Add(pDisValue)
pFldDef.ApplyCurrentValues(pValues)

pFldDef = pFldDefs.Item("CompFromDate")
pValues = pFldDef.CurrentValues
pDisValue = New ParameterDiscreteValue
pDisValue.Value = Me.CompFromDate
pValues.Add(pDisValue)

'Set the Report parameter
pFldDef = pFldDefs.Item("CompToDate")
pValues = pFldDef.CurrentValues
pDisValue = New ParameterDiscreteValue
pDisValue.Value = Me.CompToDate
pValues.Add(pDisValue)
pFldDef.ApplyCurrentValues(pValues)

pFldDef = pFldDefs.Item("RptType")
pValues = pFldDef.CurrentValues
pDisValue = New ParameterDiscreteValue
pDisValue.Value = Me.RptType
pValues.Add(pDisValue)
pFldDef.ApplyCurrentValues(pValues)

'Temporary file used for the export
Fname = AppSettings.Get("rptTempFile") &
Session.SessionID.ToString & ".doc"

Me.crDiskFileDestinationOptions = New DiskFileDestinationOptions

Me.crDiskFileDestinationOptions.DiskFileName = Fname

Me.crExportOptions = Me.crReportDocument.ExportOptions

With Me.crExportOptions
.DestinationOptions = Me.crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.WordForWindows
End With

Me.crReportDocument.Export()

Response.ClearContent()

Response.ClearHeaders()

Response.ContentType = "application/msword"

Response.WriteFile(Fname)

Response.Flush()

Response.Close()

'Delete the temp file
System.IO.File.Delete(Fname)
End Sub

Sub SetSQLConnection()

Dim crConnectionInfo As New ConnectionInfo
'Set the ConnectionInfo properties for logging on to the
Database

With crConnectionInfo
.ServerName = AppSettings.Get("rptServerName") ' <add
key="rptServerName" value="C:\PolicyTracking\PolicyTracking.mdb" />
End With

End Sub

Private Sub btnClose_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnClose.Click
Response.Redirect("frmRptMenu.aspx")
End Sub

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Nov 21 '05 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.