机房收费系统(VB.NET)——超具体的报表制作过程
生活随笔
收集整理的這篇文章主要介紹了
机房收费系统(VB.NET)——超具体的报表制作过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? 之前做機房收費系統用的報表是Grid++Report,這次VB.NET重構中用到了VisualStudio自帶的報表控件。
剛開始當然對這塊功能非常不熟悉,只是探究了一段時間后還是把它做出來了。
? ? ? ?以下把在VisualStudio(我用的是VisualStudio2013,假設與您使用的版本號不同,過程中如有不符還請考慮實際情況)中制作報表的過程盡可能具體地記錄下來,供剛開始學習的人學習參考。
? ? ? ? 做事要有全局觀,先看一下成品,做好的報表例如以下圖:
? ? ? ??
? ? ? ? 事實上可以達到這種效果須要做雙方面的工作:加入報表控件ReportViewer和加入編輯RDLC文件。
個人感覺RDLC文件的作用是綁定數據庫中須要的數據,ReportViewer則是引用RDLC文件來顯示RDLC文件從數據庫中綁定的數據。
? ? ? ? 1、加入報表控件ReportViewer:
? ? ? ? ?加入報表控件非常easy:工具箱—報表—ReportViewer控件。
? ? ? ? 2、加入和編輯編輯RDLC文件:
? ? ? ?加入RDLC文件,有兩種方法:1、鼠標左擊一下剛剛加入的ReportViewer,會發現控件右上角會出現一個黑色的小三角,點擊那個小三角→設計新報表: ? ? ? ?? ? ? ?假設是第一次創建RDLC文件,那么出來的界面是這種: ? ? ? ?
? ? ? ? ?如圖片左上角所看到的。系統默認新建的這個數據集名稱為“DataSet1”,為了命名規范,我們先取消“數據源配置向導”這個窗口,又一次命名數據集名稱,我的命名為DataSetCheckoutReport: ? ? ? ? ?? ? ? ? ? ? ? ? ? ?命名之后。點擊“新建”進入“數據源配置向導”窗體:
? ? ? ??
? ? ? ? 在“ 應用程序將從哪里獲取數據?”問題下。選擇“數據庫”,下一步:
? ? ? ??
? ? ? ? 在“ 要使用哪種類型的數據庫模型?”問題下,選擇“ 數據集 ”。下一步:
? ? ? ??
? ? ? ? 在“ 應用程序連接數據庫應使用哪個數據庫連接? ”后點擊“ 新建連接 ”:
? ? ? ??
? ? ? ? 如上圖,分別選擇或輸入對應項,測試連接。假設測試成功。則確定,自己主動返回到“ 數據源配置向導 ”窗口。下一步: ? ? ? ? 【拓展】 ? ? ? ? ?這個步驟假設您出現了【未能載入文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一個依賴項。
系統找不到指定的文件】這個錯誤,那么能夠下載安裝SharedManagementObject.msi
。? ? ? ??
? ? ? ? 選擇須要用到的數據庫中的對象,設置DataSet名稱,完畢,自己主動返回“ 報表向導 ”窗口,下一步: ? ? ? ??
? ? ? ?將須要的字段按順序拖入行組或列組中,因為“∑值”中必須拖入字段。這里我們隨便拖入一個字段(假設不須要的話后面還能夠改)。一直點“下一步”。直到“完畢”,RDLC文件的雛形就出來了: ? ? ? ??
? ? ? ? 這里我們不須要用到對每列的sum,所以右鍵表格的每一個行和最后一列不須要的行和列刪除,僅僅留下須要的行和列(或者直接把這個表刪除。右鍵插入新的表,然后依據自己的須要編輯),我設計好的表為: ? ? ? ?? ? ? ? ?第一行為列標題,第二行為數據關聯行,即與數據庫中數據的關聯,鼠標放到第二行每一個單元格時,單元格右上角會出現一個小圖標。點擊則能夠為該單元格以及該單元格所在的整列關聯數據集中的數據。 ? ? ? 以下就開始設計報表的一些細節,如標題、參數、時間等等: ? ? ? ? ?
? ? ? ?加入文本框:加入標題 “機房收費系統結賬單” 事實上就是在【工具箱】中加入文本框就能夠。
其它文本如“開始時間:”、“結束時間:”等也是一樣;
? ? ? ?加入內置字段:如上圖。右下角的《Exp》就是報表中自帶的函數。能夠在【報表數據】的內置字段中加入,比方我在右下角的這個Exp就是要顯示運行報表的時間,時間格式能夠自己設定,右鍵《Exp》—表達式。在“為下面項設置表達式”下輸入表達式就可以,如我想讓它顯示的時間格式為“2014-08-08 08:08:08”,則可輸入“?=Format(Now,"yyyy-MM-dd hh:mm:ss")?”。 ? ? ? ? ?加入參數:另外前面帶有@的表達式,就是您的程序中將要傳入報表中的參數,比方我想在報表左下角顯示制作這個報表的操作員,而這個操作員的username僅僅能從程序中獲取。上面的開始日期@startTime和截止日期@endTime也是須要從代碼中傳入。這類參數能夠右擊【報表數據】的“參數”,來加入參數。 ? ? ?(注:假設您沒有找到【工具箱】或【報表數據】那么就須要去【視圖】中加入。) ? ? ? ? ? ? ? ?以下就到了最后階段。加上代碼,核心代碼為(限于篇幅。在這僅僅貼上刷新button事件代碼):'在本代碼層首先要加入下面引用
Imports System
Imports Microsoft.Reporting.WinFormsPrivate Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click'依據時間段查詢結賬記錄Dim startTime As String = Format(dtpBegin.Value, "yyyy-MM-dd")Dim endTime As String = Format(dtpEnd.Value, "yyyy-MM-dd")Dim dt As New DataTable'對象【checkReportFacade】的【QueryCheckOut】方法功能是依據兩個日期,查詢此時間段的結賬記錄dt = checkReportFacade.QueryCheckOut(startTime, endTime)'聲明一個報表數據源對象Dim rptDateSource = New ReportDataSource'設置報表數據集名稱rptDateSource.Name = "DataSetCheckoutReport"'設置報表數據源實例rptDateSource.Value = dt'設置嵌入報表的資源名稱reportViewer.LocalReport.ReportEmbeddedResource = "UI.CheckReport.rdlc"'清空報表數據源reportViewer.LocalReport.DataSources.Clear()'加入報表數據源reportViewer.LocalReport.DataSources.Add(rptDateSource)'設置報表中的參數集合(注意:這里的參數和報表中的參數大寫和小寫和數據類型都要一致)Dim strUserID As String = Entity.UtilUserEntity.UtilUser.UserIDDim params As ReportParameter()params = {New ReportParameter("startTime", startTime),New ReportParameter("endTime", endTime),New ReportParameter("userId", strUserID)}'傳遞報表中的參數集合reportViewer.LocalReport.SetParameters(params)'刷新報表Me.reportViewer.RefreshReport()End Sub? ? ? ?? ? ??溫馨提示:代碼中的數據集名稱DataSetCheckoutReport一定要與剛開始創建RDLC文件時設定的數據集名稱DataSetCheckoutReport一樣,否則將會出現“尚未為數據源***提供數據源實例”的錯誤。
? ? ? ?最后,又一次單擊第一步加入的ReportViewer空間,點擊右上角的小三角。在“選擇報表”后選擇您剛制作的報表就大功告成了。到此,一張簡單的報表就制作好了 ? ? ? ?? ? ? ? ?假設步驟中有錯誤或不全面的地方。歡迎補充說明。
轉載于:https://www.cnblogs.com/blfbuaa/p/6738592.html
總結
以上是生活随笔為你收集整理的机房收费系统(VB.NET)——超具体的报表制作过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《长相思·九月西风兴》第二十句是什么
- 下一篇: 在DataTable中更新、删除数据