今天有一張報表,其中包含子報表,子報表的資料不是從資料庫撈而是使用程式填入,程式碼如下:
'載入報表
Dim rptdoc As ReportDocument = CRUtil.LoadReport("C:\ReportFilePath.rpt")
'設定報表參數
CRUtil.SetParameters(rptdoc, "@P1", "abc")
CRUtil.SetParameters(rptdoc, "@P2", 1)
'設定報表資料來源連接資訊
CRUtil.SetConnection(rptdoc, Me.ReportConnectionInfo())
'設定報表資料內容
Dim dtl As DataTable = Me.GetSubReportData()
rptdoc.Subreports("SubReport.rpt").Database.Tables("SubReport").SetDataSource(dtl)
結果發現在執行顯示報表時 CrystalReportViewer 會跳出輸入參數的畫面,
查了好久查不出原因。
後來發現是因為當我將資料直接填到子報表的時候,報表參數的值會被清除@@,
將程式碼順序對掉後就可以了。
對掉後的程式碼:
'載入報表
Dim rptdoc As ReportDocument = CRUtil.LoadReport("C:\ReportFilePath.rpt")
'設定報表資料內容
Dim dtl As DataTable = Me.GetSubReportData()
rptdoc.Subreports("SubReport.rpt").Database.Tables("SubReport").SetDataSource(dtl)
'設定報表參數
CRUtil.SetParameters(rptdoc, "@P1", "abc")
CRUtil.SetParameters(rptdoc, "@P2", 1)
'設定報表資料來源連接資訊
CRUtil.SetConnection(rptdoc, Me.ReportConnectionInfo())
沒有留言:
張貼留言