1 / 27

RDLC 10.0

RDLC 10.0. 計網中心. 產生 RDLC 報表架構. 快速建置一張 RDLC 報表 1/2. 新增 Linq to Sql, 加入 NorthWind 資料庫中的 Employees 及 Orders 資料表 新增資料集 DataSet1, 加入 NorthWind 資料庫中的 Employees 及 Orders 資料表 新增 RDLC 報表 點選 RDLC 報表的報表資料 , 加入資料集 DataSet1 中 Employees 資料表 從工具箱中拖曳資料表至 RDLC 主體. 快速建置一張 RDLC 報表 2/2. 從報表資料集中拖曳欄位至主體的資料表

tricia
Download Presentation

RDLC 10.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RDLC 10.0 計網中心

  2. 產生RDLC報表架構

  3. 快速建置一張RDLC報表 1/2 • 新增Linq to Sql,加入NorthWind資料庫中的Employees及Orders資料表 • 新增資料集DataSet1,加入NorthWind資料庫中的Employees及Orders資料表 • 新增RDLC報表 • 點選RDLC報表的報表資料,加入資料集DataSet1中Employees資料表 • 從工具箱中拖曳資料表至RDLC主體

  4. 快速建置一張RDLC報表 2/2 • 從報表資料集中拖曳欄位至主體的資料表 • 在網頁中加入ScriptManager、ReportViewer及linqdatasource • 在ReportViewer中設定報表來源及資料來源 • LinqDatasource指到Employee資料表 • 完成,執行。

  5. 快速建置一張RDLC子報表 1/3 • 新增RDLC報表,做為子報表,名稱定為Report2 • 點選RDLC報表的報表資料,加入資料集DataSet1中Orders資料表 • 從工具箱中拖曳資料表至RDLC主體 • 從報表資料集中拖曳欄位至主體的資料表 • 在報表資料中的參數,加入參數EmployeeID • 回到主報表中,從工具箱中拖曳子報表至主報表主體中

  6. 快速建置一張RDLC子報表 2/3 • 在主體中的子報表點選右鍵,選擇子報表屬性,設定子報表名稱為Report2,及設定參數EmployeeID資料來源為EmployeeID欄位 • 在網頁中加入一function: Private Sub SubReportProcessingEventHandler(ByVal sender As Object, ByVal e As Microsoft.Reporting.WebForms.SubreportProcessingEventArgs) Dim db As New DataClassesDataContext Dim dt = From r In db.Orders Where r.EmployeeID = e.Parameters("EmployeeID").Values.First Dim ds = New Microsoft.Reporting.WebForms.ReportDataSource(e.DataSourceNames.First, dt.ToList) e.DataSources.Add(ds) End Sub

  7. 快速建置一張RDLC子報表 3/3 • 在網頁中的Page_load事件中加入:AddHandler Me.ReportViewer1.LocalReport.SubreportProcessing, AddressOf SubReportProcessingEventHandler • 完成,執行

  8. 報表項目 • 文字方塊 • 線條 • 資料表 • 矩陣 • 矩形 • 清單 • 影像 • 子報表 • 圖表 • 量測計

  9. 文字方塊-屬性 • CanGrow:會不會為了容納更長的值而自動加大。 • CanShrink:會不會為了容納更短的值而自動縮小

  10. 資料表-屬性 • FixedColumnHeader:向下捲動時,是否固定顯示資料行標頭 • FixedRowHeaders:向右捲動時,是否固定顯示資料列標頭 • NoRowsMessage:指定沒有資料列可用時,顯示在資料區的訊息 • RepeatColumnHeaders:在每一頁是否顯示資料行標頭 • RepeatRowHeaders:在每一頁是否顯示資料列標頭

  11. 資料表群組 1/2

  12. 資料表群組 2/2

  13. 矩陣群組

  14. 清單群組

  15. 影像 1/2

  16. 影像 2/2

  17. 圖表

  18. 量測計

  19. 報表變數 • 在運算式使用Variables!Title.Value

  20. 自訂程式碼 • 可在報表屬性中的程式碼,加入自訂程式碼,例如:Function Gethello() As String Return "hello“End Function • 在其他元件的運算式編輯器中就可使用Code.Gethello() 呼叫自訂程式碼

  21. 報表參考 1/2

  22. 報表參考 2/2 • 自訂程式碼: Function GetTest() As String Return Emp.IsEmpty End Function

  23. 當清單遇到資料表 1/2 • 在報表項目中拖曳清單至報表主體中 • 在清單中選擇Tablix屬性,資料集名稱設為DataSet1 • 在清單的列按右鍵選資料列群組->群組屬性,在群組運算式中加入City欄位 • 在清單主體中置入文字方塊及資料表,並設定好欄位

  24. 當清單遇到資料表 2/2 • 最後結果圖示如下:

  25. 報表主體分欄 • 在報表中,設定Columns=2結果如下:

  26. 結論 • 為微軟自行開發的報表組件,故其不需要注冊,也沒有使用次數的限制,也實現了RDLC報表與.Net的無縫集成。 • 簡單易用的控件,特別是Table控件,方便報表樣式的設計,且不用報表開發人員畫線條,提高了報表的開發效率。 • 靈活的可定制性,用XML來描述一個報表的相關一切。 • 支持導出Excel、PDF、Word及Jpeg格式。 Software Guide Vol.8 No.12 Dec.2009

  27. 附錄 Private Sub Export(ByVal type As String) Dim s As New Microsoft.Reporting.WebForms.LocalReport s.ReportPath = Server.MapPath("Reports\Report.rdlc") s.DataSources.Add(New ReportDataSource("DataSet1_Orders", getdata())) '注意!名稱很重要,不要亂取 'Dim strStreamIds As String() Dim strMimeType As String = String.Empty Dim strEncoding As String = String.Empty Dim strFileNameExtension As String = String.Empty 'Dim warning As Warning() 'Dim bytes As Byte() = ReportViewer1.LocalReport.Render("Excel", Nothing, strMimeType, strEncoding, strFileNameExtension, Nothing, Nothing) 'Dim bytes As Byte() = s.Render(type, Nothing, strMimeType, strEncoding, strFileNameExtension, Nothing, Nothing) 'or "Excel" Dim bytes As Byte() = s.Render("Image", Nothing, strMimeType, strEncoding, strFileNameExtension, Nothing, Nothing) 'or "Excel" Dim co_filename As String = String.Empty Select Case type Case "Excel" co_filename = ".xls" Case "PDF" co_filename = ".pdf" Case Else co_filename = ".jpg" End Select Dim strFilePath As String = Server.MapPath("report" & co_filename) Dim httpHeader As String = "attachment;filename=" & "report" & co_filename Response.AppendHeader("Content-Disposition", httpHeader) Response.ContentType = "application/octet-stream" Response.BinaryWrite(bytes) Response.End() End Sub

More Related