水晶報表教程
本文以一個三層結構的程序爲例,介紹如何使用crystalreport來製作一份報表的水晶報表教程,其中着重介紹用水晶報表創建圖表的技巧。
操作方法
(01)報表是應用程序中不可缺少的部分,一張好的報表,能直觀地讓人把握數據的情況,對決策起到重要作用。那麼,如果才能更快捷、更高效地實現報表呢?本文以一個三層結構的程序爲例,介紹如何使用crystalreport,來製作一份報表,其中介紹了不少水晶報表的技巧。在這個例子中,我們設想的應用要爲一個銷售部門製作一份報表,管理者可以檢視某段時間之內的銷售情況,以列表或者折線圖的形式反映出銷售的趨勢。我們將使用SQLServer 2000做爲數據庫,使用編寫中間層邏輯層,而前端的表示層使用C#。介紹水晶報表教程之前,我們先來看下數據庫的結構。
(02)其中,tbitem表中存放的是每張訂單中所訂購的貨品,tbsales存放的是每張訂單,tblsalesperson是銷售員表,存放該出版社的每位銷售員。接下來,使用SQLServer 2000來創建這些表。表的結構如下所示:
(03)水晶報表教程之創建中間邏輯層在中間邏輯層組件中,我們爲每一張表都創建兩個類。比如,對於tblItems表,創建item和items類。Item類中記錄每件銷售的貨品的詳細情況,而items表則記錄所有銷售的貨品並且有增加貨品的方法。這樣,就存在下面的六個類:Item and ItemsSalesPerson and SalesPersonsSale and Sales接下來,看一下每個類中的屬性:Item類包括如下屬性ItemId (貨品id編號)Description (貨品的描述)Items有一個方法,將根據item的編號返回一個item對象PublicFunctionGetAllItems()yListSalesPerson該類有以下三個屬性:SalesPersonId(銷售員編號)Name(姓名)Password(密碼)SalesPersons有一個方法,根據銷售員登陸時輸入的用戶名和密碼,在數據庫中,驗證銷售員的登陸是否正確,如果正確,則返回零。PublicFunctionValidateUser(strUserNameasString,strPasswordasString)AsIntegerSale有如下5個屬性SaleIdSalesPersonIdItemIdSaleDateAmountSales有兩個方法,其中getsales根據輸入的參數返回sales對象的集合PublicFunctionGetSales(OptionalnSaleIdAsInteger=0,OptionalnSalesPersonIdAsInteger=0,OptionalnItemIdAsInteger=0)yList還有一個addsales方法,用於增加一張訂單PublicFunctionAddSale(objSaleAsSale)
(04)水晶報表教程之創建表現層頁面接下來,開始創建表現層頁面。首先,要創建一個可以給銷售員登陸的頁面,如下圖所示。
(05)在銷售員成功登陸後,可以給銷售員輸入某樣貨品銷售的數量,如下圖:
(06)此外,爲了給業務主管看到某個時期的銷售情況,創建如下頁面。
(07)其中,業務主管可以選擇檢視某樣貨品在某個時期(選擇開始日期,結束日期)的銷售情況,以圖表方式顯示。這裏特別值得一提的是,日曆控件的使用。在頁面中放置日曆控件後,設定如下代碼:
(08)這裏設定page_validationactive參數爲false,所以不需要重新提交頁面,並且,在onserverclick事件中,設定處理的代碼,如下所示:
(09)水晶報表教程之創建報表首先,往窗體中添加水晶報表控件,之後,就可以用水晶報表的報表設計器設計一份報表了。新建一個水晶報表檔案類型,命名爲,接着使用報表設計專家,並選擇設計標準型的報表,點下一步,出現如下畫面:
(10)我們選擇使用ADO類型的數據,在彈出的視窗中,設定好sqlserver的登陸名,登陸密碼,選擇好數據庫後,選擇在報表中使用tblsales表,如下圖:
(11)接着選Next,在要在報表中顯示的字段中,選擇SaleDate和Amount。之後,一直選NEXT,忽略其他相關設定,最後,在圖表類型中選擇折線圖,如下圖:
(12)由於要根據輸入的日期,貨品參數來動態顯示報表,因此我們要設定參數字段。在報表設計器中,在字段資源管理器中,選擇參數字段,鼠標右擊選擇“新建”,新建如下三個參數字段。
(13)水晶報表教程之在程序中使用報表接下來,我們可以在程序中用代碼處理和報表的連接過程。首先,在工程項目中,增加如下的兩個命名空間的引用(注意,在代碼中也必須用using引入它們):
(14)水晶報表教程之傳遞參數到水晶報表定義一個新的過程,setReportParameters(),代碼如下:
(15)現在來解釋一下上面的代碼。在水晶報表中,瀏覽器控件有一個屬性parameterfieldsinfo,該屬性可以透過綁定parameterfields類型的集合,將相關的參數的實際數值傳遞到報表。Parameterfields類型集合透過add的方法,接收Parameterfield類型的對象。因此,我們先爲itemid,startdate,enddate三個參數創建parameterfield類型的對象,並且設定它們對應報表中接受參數的名稱:
(16)最後,就可以在三個parameterfield的對象中的currentvalues中設定它們的值,並往paramFields集合中加進這三個parameterfield對象。執行的結果如下。
-
郵箱快速註冊,不用手機號
如何快速註冊郵箱?如何不用手機號註冊郵箱?僅以TOM郵箱爲例。操作方法(01)點擊連接進入TOM郵箱註冊頁面輸入郵箱賬號等資訊(02)選擇微信註冊,拿出手機掃一掃即可完成註冊特別提示使用微信掃一掃,不用手機號和驗證碼...
-
Steam錯誤代碼118最新解決方案
Steam商店錯誤代碼118怎麼解決?Steam商城進不去,提示錯誤代碼118應該怎麼解決呢?大家不用擔心,Steam錯誤代碼118是電腦自身網絡解析出現了問題,我們改下網絡設定即可解決問題。那麼,具體要怎麼操作呢?接下來小編就給大家詳細說說Steam錯誤代碼118的解決方法,趕緊GET起...
-
電腦顯示屏幕不亮 筆記本不能開機啓動
電腦非正常關機或者用久了,再次開啟,突然打不開了,屏幕顯示不亮,連繫統都進不了怎麼回事?何種情況下,需要維修?操作方法(01)第一檢視信號指示燈。先是判斷實際能否開機,若開機了指示燈會有閃爍。黑屏有時並非全黑屏,仔細看是灰屏,此時信號燈開機時有閃爍。說明硬件沒有問題...
-
塞爾達傳說 支線消失的咕咕雞 任務攻略
很多小夥伴可能不瞭解塞爾達咕咕雞任務,非常好奇想要知道,那麼我就來解答一下這個問題吧,具體內容請看下文:塞爾達咕咕雞任務一共7只雞分佈在村莊裏,但是在地圖上並沒有任何的提示,尋找起來頗費一番功夫。操作方法(01)在地圖上找到卡卡利科村,點進去;(02)跟丟雞的老爺爺對...