2015-11-12 446 views
0

我正在運行Visual Studio 2010附帶的Crystal版本。我有一個包含三個子報告的報告。有從主報告傳遞給子報告的參數。我可以通過點擊主報告預覽在開發環境中運行報告。Crystal Reports缺少參數值

問題是當我嘗試在運行時執行它。我收到錯誤「缺少參數值」。我需要一些關於如何調試這個問題的提示。該錯誤不會告訴您哪個參數是問題或涉及哪個子報告。

任何提示將不勝感激。

我正在編輯這個來回答一些問題。我正在使用子報告鏈接,這是我認爲問題可能出現的地方。在通過擺弄設置我能夠得到它的工作。這似乎只是試驗和錯誤。

我在這裏基於評論

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請求發佈代碼的一部分...

+0

你是如何從vb.net傳遞參數的? – haraman

+0

您使用「子報告鏈接」嗎? – Steve

+0

將您的代碼添加到問題中。 – aMazing

回答

0

我解決了這個問題,這是來自heringer的暗示給了我線索。我將6個參數傳遞給主報告,但其中兩個僅用於子報告,而不是主報告本身。我正在定義這些沒有領先的「@」。我通過在代碼中傳遞參數來顯示參數,從而計算出來。

我還能看到一份正在工作的舊報告,看到我需要at標誌。

Bob