Crystal Reports缺少参数值

时间:2015-11-12 16:11:22

标签: vb.net visual-studio crystal-reports

我正在运行Visual Studio 2010附带的水晶版本。我有一个包含三个子报告的报告。有些参数从主报告传递到子报告。我可以通过单击主报表预览在开发环境中运行报表。

问题是当我尝试在运行时执行它时。我收到错误“缺少参数值”。我需要一些关于如何调试此问题的提示。该错误不会告诉您哪个参数是问题或涉及哪个子报告。

任何提示都将受到赞赏。

我正在编辑此内容以回答一些问题。我正在使用子报告链接,这是我认为问题可能出现的地方。在通过摆弄设置的过程中,我能够让它发挥作用。这似乎只是反复试验。

我根据评论中的请求

发布了部分代码
 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)

它在最后一行崩溃.ExportToDisk ...

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,这是来自heringer的暗示给了我线索。我将6个参数传递给主报告,但其中两个仅由子报告使用,而不是主报告本身。我在没有领先的“@”的情况下定义了这些。我通过显示参数来解决这个问题,因为我在代码中传递了这些参数。

我还能看到一份正在运行的旧报告,看到我需要这些标志。

鲍勃

相关问题