【问题标题】:Crystal Reports Missing Parameter ValuesCrystal Reports 缺少参数值
【发布时间】:2016-02-14 01:09:26
【问题描述】:

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

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

任何提示将不胜感激。

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

我根据cmets中的请求在这里贴出部分代码

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

【问题讨论】:

  • 你是如何从 vb.net 传递参数的?
  • 你在使用“子报表链接”吗?
  • 将您的代码添加到问题中。
  • 我正在使用子报表链接
  • 发布您填写参数的代码部分。我了解当主报告缺少参数时会出现此问题。

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


【解决方案1】:

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

我还能够查看一份正在运行的旧报告,发现我需要 at 标志。

鲍勃

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多