0
votes

I am running the version of crystal that comes with Visual Studio 2010. I have a report that has three sub reports. There are parameters that are passed from the main report to the sub-reports. I am able to run the report in the development environment by clicking on Main Report Preview.

The problem is when I try to execute it at run time. I get the error “Missing parameter values”. I need some hints as to how to debug this problem. The error doesn’t tell you which parameter is the problem or which sub-report is involved.

Any hint will be appreciated.

I am editing this to respond to some of the questions. I am using subreports links which is where I think the problem might be. In the pass by fiddling with the settings I was able to get it to work. It seems like it was just trial and error.

I am posting a portion of the code here based on the request in the comments

 Public Function GetReportOutput(iDatabaseIndicator As eDatabaseIndicatorEnum, ReportName As String, ReportOutputtype As eReportOutputtype, ReportParameters As System.Collections.Generic.List(Of clsReportParam)) As clsReturn Implements IsvcEDReports.GetReportOutput
    Dim l_crRep As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    Dim l_clsReturn As clsReturn = New clsReturn
    Dim l_ExportFormatType As ExportFormatType


    Dim l_strReport As String = ""
    Dim l_strReportName As String = ""
    Dim l_strOutputFile As String = ""
    Dim l_strFullPathName As String = ""

    Dim l_strReportOutputPath As String = ConfigurationManager.AppSettings.Get(IIf(ConfigurationManager.AppSettings.Get("Environment") = 1, "ReportOutputPath_Dev", "ReportOutputPath_Prod"))
    Dim l_strReportPath As String = ConfigurationManager.AppSettings.Get(IIf(ConfigurationManager.AppSettings.Get("Environment") = 1, "ReportPath_Dev", "ReportPath_Prod"))

    Dim l_udtReport As CrystalDecisions.CrystalReports.Engine.ReportDocument = Nothing
    Dim l_intCount As Integer = 0
    Dim l_fsReturn As FileStream = Nothing
    Dim l_binFilestream As BinaryReader = Nothing
    Dim l_bytFile As Byte() = Nothing

    Dim l_expOptions As New CrystalDecisions.Shared.ExportOptions
    Dim l_expExcFmtOptions As New CrystalDecisions.Shared.ExcelFormatOptions

    Dim l_tblParameters As New DataTable("Parameters")
    Dim l_aryParams(1)

    Dim udtSubReport As ReportDocument
    Dim udtSubReportOpened As ReportDocument


    Try
        iDatabaseIndicator = iDatabaseIndicator
        InitDataController(iDatabaseIndicator)
        m_strReport = (l_strReportPath & "\" & ReportName)


        l_strReportName = ReportName
        l_strReport = m_strReport
        l_strOutputFile = Regex.Replace(ReportName, " ", "_") & "_" & Format(Now(), "MMddyyyy_hhmmss")

        m_strOutputFilename = l_strOutputFile


        With l_crRep
            .Load(l_strReport, CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
            If .IsLoaded Then
                For Each udtSubReport In .Subreports
                    udtSubReportOpened = .OpenSubreport(udtSubReport.Name)
                    SetDatabase(udtSubReportOpened, False)
                    SetParameters(udtSubReportOpened, ReportParameters, False)
                Next
                SetDatabase(l_crRep)
                SetParameters(l_crRep, ReportParameters)


                Select Case ReportOutputtype
                    'Case eReportOutputtype.rptOutputType_RPT
                    '    l_strOutputFile = l_strOutputFile & ".rpt"
                    '    l_ExportFormatType = ExportFormatType.CrystalReport
                    Case eReportOutputtype.rptOutputType_XLS
                        l_strOutputFile = l_strOutputFile & ".xls"
                        'ReportOutputFile = ReportOutputFile & ".xls"
                        With l_expExcFmtOptions
                            .ExcelConstantColumnWidth = 125
                            .ExcelUseConstantColumnWidth = True

                        End With
                        With l_expOptions
                            .ExportFormatOptions = l_expExcFmtOptions
                        End With
                        l_ExportFormatType = ExportFormatType.Excel
                    Case eReportOutputtype.rptOutputType_PDF
                        l_strOutputFile = l_strOutputFile & ".pdf"
                        ' ReportOutputFile = ReportOutputFile & ".pdf"
                        l_ExportFormatType = ExportFormatType.PortableDocFormat


                    Case eReportOutputtype.rptOutputType_DOC
                        l_strOutputFile = l_strOutputFile & ".doc"
                        ' ReportOutputFile = ReportOutputFile & ".doc"
                        l_ExportFormatType = ExportFormatType.WordForWindows
                    Case eReportOutputtype.rptOutputType_CSV
                        l_strOutputFile = l_strOutputFile & ".csv"
                        '  ReportOutputFile = ReportOutputFile & ".csv"
                        l_ExportFormatType = ExportFormatType.CharacterSeparatedValues
                    Case eReportOutputtype.rptOutputType_TXT
                        l_strOutputFile = l_strOutputFile & ".txt"
                        '  ReportOutputFile = ReportOutputFile & ".txt"
                        l_ExportFormatType = ExportFormatType.Text
                    Case eReportOutputtype.rptOutputType_XML
                        l_strOutputFile = l_strOutputFile & ".xml"
                        '  ReportOutputFile = ReportOutputFile & ".xml"
                        l_ExportFormatType = ExportFormatType.Xml

                End Select

                .ExportToDisk(l_ExportFormatType, l_strReportOutputPath & "\" & l_strOutputFile)

It crashes on the last line .ExportToDisk ...

1
How are you passing parameters from vb.net? - haraman
Are you using "sub report links"? - Steve
Add your code to the question. - aMazing
I am using subreport links - Bob Avallone
Post the part of the code where you fill the parameters. I understand this problem occurs when the main report is missing parameters. - heringer

1 Answers

0
votes

I solved this problem, It was the hint from heringer that gave me the clue. I am passing 6 parameters to the main report but two of them are only used by the a sub-report not the main reports itself. I was defining these without the leading "@". I figured this out by display the parameters as I passed them in my code.

I was also able to look at an old report that was working and saw that I needed the at signs.

Bob