摘 要:水晶報(bào)表(Crystal Reports)是當(dāng)前業(yè)內(nèi)廣泛應(yīng)用的報(bào)表系統(tǒng),有很強(qiáng)的專業(yè)性與功能性。本文以一重型機(jī)械廠為例,首先介紹水晶報(bào)表系統(tǒng)在企業(yè)實(shí)際運(yùn)行中的應(yīng)用情況,進(jìn)一步探討在使用過(guò)程中的一些問(wèn)題及解決策略。
關(guān)鍵詞:水晶報(bào)表、視圖、SP、 數(shù)據(jù)庫(kù)
[中圖分類號(hào)]:F231.5 [文獻(xiàn)標(biāo)識(shí)碼]:A
[文章編號(hào)]:1002-2139(2012)-03-0244-01
水晶報(bào)表(Crystal Reports)本身是一個(gè)集應(yīng)用與設(shè)計(jì)為一體的報(bào)表平臺(tái)。用戶在使用報(bào)表時(shí),可以直接通過(guò)界面操作,不需要編寫一行代碼即可完成報(bào)表對(duì)數(shù)據(jù)表數(shù)據(jù)的操作。它支持大多數(shù)流行的開發(fā)語(yǔ)言,通過(guò)將 Crystal Reports 的報(bào)表處理功能整合到自己的數(shù)據(jù)庫(kù)應(yīng)用程序中,可以方便地在任何應(yīng)用程序中添加報(bào)表。水晶報(bào)表?yè)碛锌梢暬脑O(shè)計(jì)環(huán)境,提供直觀的、可拖放對(duì)象的、交互性用戶界面,公式語(yǔ)言強(qiáng)大,內(nèi)置超過(guò)了160種函數(shù)和操作符,以控制報(bào)表的格式、復(fù)雜的邏輯和數(shù)據(jù)選擇,是一個(gè)強(qiáng)大的報(bào)表設(shè)計(jì)工具。
1、水晶報(bào)表的實(shí)際操作與應(yīng)用
該機(jī)械公司原各種業(yè)務(wù)數(shù)據(jù)存在數(shù)據(jù)冗余、結(jié)構(gòu)混亂的問(wèn)題,同樣的數(shù)據(jù)被多次維護(hù),效率比較低,各個(gè)報(bào)表之間的冗余數(shù)據(jù)和不一致性比較大。報(bào)表沒(méi)有經(jīng)過(guò)系統(tǒng)的規(guī)劃,沒(méi)有實(shí)現(xiàn)數(shù)據(jù)庫(kù)存儲(chǔ),不利于信息的統(tǒng)計(jì)分析和數(shù)據(jù)挖掘,同時(shí)由于信息不共享造成了重復(fù)工作。
公司所使用的RS10系統(tǒng)報(bào)表以處理報(bào)表的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)生成為主線,實(shí)現(xiàn)了數(shù)據(jù)分部門填報(bào),部分?jǐn)?shù)據(jù)導(dǎo)入的方式,采用水晶報(bào)表設(shè)計(jì)工具后,生成的報(bào)表分權(quán)限管理,在報(bào)表中心定時(shí)生成,實(shí)現(xiàn)了數(shù)據(jù)的動(dòng)態(tài)更新,并可發(fā)送到用戶指定的報(bào)箱,用戶可隨時(shí)享用報(bào)表打印、導(dǎo)出、刷新和搜索的功能,并可保存為Word、Excel、PDF等多樣的文檔格式。目前系統(tǒng)中人力報(bào)表共有30張,各勞資員可隨時(shí)打印工資條、工資匯總等相關(guān)報(bào)表,運(yùn)營(yíng)報(bào)告報(bào)表48張,形象報(bào)產(chǎn)、工時(shí)定額、設(shè)備報(bào)表等8張。設(shè)備報(bào)表和人力報(bào)表還在不斷增加中,以后還會(huì)涉及到財(cái)務(wù)、銷售等報(bào)表。手動(dòng)生成的報(bào)表在各相關(guān)功能頁(yè)面顯示,可直接點(diǎn)擊查看;自動(dòng)生成的報(bào)表在報(bào)表中心生成報(bào)表樹,分類顯示,每訂閱一次報(bào)表,要在報(bào)表訂閱中選中查看的報(bào)表。報(bào)表的數(shù)據(jù)時(shí)時(shí)生成,而不需要用Excel粘粘貼貼。當(dāng)財(cái)務(wù)、采購(gòu)、銷售模塊正式上線后,將不用在運(yùn)營(yíng)報(bào)告錄入財(cái)務(wù)、生產(chǎn)等數(shù)據(jù),而是從這些模塊中直接提取,減少錯(cuò)誤率。同時(shí)增加了Excel導(dǎo)入功能,可直接把Excel數(shù)據(jù)導(dǎo)入,而不需要每月通過(guò)Access導(dǎo),減少了報(bào)表維護(hù)量。
從使用情況來(lái)看,水晶報(bào)表的功能強(qiáng)大,水晶報(bào)表與電子表格最大的區(qū)別是它的數(shù)據(jù)處理能力強(qiáng)大。它是通過(guò)數(shù)據(jù)庫(kù)而不是讀取單元格的數(shù)據(jù)來(lái)完成諸如排序、統(tǒng)計(jì)、分類匯總、查詢、更新等功能,使得報(bào)表對(duì)數(shù)據(jù)處理的性能可以得到很大的提高。
2、水晶報(bào)表使用中的一些問(wèn)題
(1)使用視圖對(duì)系統(tǒng)效率的影響
水晶報(bào)表由于設(shè)計(jì)模型的局限,只能進(jìn)行橫向計(jì)算和簡(jiǎn)單的縱向跨行計(jì)算,而無(wú)法處理更加復(fù)雜但又非常常見的計(jì)算(如跨組計(jì)算,名次計(jì)算等),這樣就造成了許多報(bào)表很難實(shí)現(xiàn)。這時(shí)需要編寫大量的視圖、SP,通過(guò)視圖鏈接到數(shù)據(jù)源,來(lái)消除不必要的復(fù)雜連接、篩選器或公式,使用戶不必在基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)變動(dòng)時(shí)重新定義報(bào)表,但同時(shí)視圖也對(duì)系統(tǒng)效率產(chǎn)生了影響。
視圖可以被看成是虛擬表或存儲(chǔ)查詢,但通過(guò)視圖訪問(wèn)的數(shù)據(jù)不作為獨(dú)特的對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)。它相當(dāng)于一張?zhí)摂M的表,在運(yùn)行時(shí)可以當(dāng)作表Table來(lái)進(jìn)行查詢(增刪改是不行的),其目的是用來(lái)呈現(xiàn)數(shù)據(jù)。大多數(shù)情況下,視圖是通過(guò)兩個(gè)或多個(gè)表的鏈接取出記錄,對(duì)于簡(jiǎn)單的數(shù)據(jù)查詢可以提高檢索速度,但要進(jìn)行數(shù)據(jù)的計(jì)算,如求和、平均等,大量的數(shù)據(jù)計(jì)算操作就會(huì)影響數(shù)據(jù)庫(kù)的效率。特別是該公司系統(tǒng)的工資、人力檔案數(shù)據(jù)多,計(jì)算復(fù)雜,查詢條件多,數(shù)據(jù)庫(kù)執(zhí)行得比較慢,導(dǎo)致在頁(yè)面打開水晶報(bào)表時(shí),速度慢,沒(méi)有反應(yīng),出現(xiàn)空白頁(yè)。如汽輪機(jī)制造部人員703個(gè),在做工資匯總表時(shí),先要選出當(dāng)前核算期的數(shù)據(jù),再對(duì)這些數(shù)據(jù)進(jìn)行車間處室分組求和,后臺(tái)數(shù)據(jù)庫(kù)執(zhí)行需要一分鐘左右,在前臺(tái)頁(yè)面完全打不開。有的報(bào)表甚至需要七八個(gè)視圖,視圖套視圖的結(jié)構(gòu)影響了數(shù)據(jù)的計(jì)算速度。
解決這一問(wèn)題,可以多用系統(tǒng)的高級(jí)查詢、排序、分組、篩選功能,導(dǎo)出到Excel,到Excel表中去隨意處理數(shù)據(jù)。再有就是編寫存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中。用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。在服務(wù)器上執(zhí)行存儲(chǔ)過(guò)程,可以改善應(yīng)用程序的性能,這樣可以避免把大量的數(shù)據(jù)下載到客戶端,減少網(wǎng)絡(luò)上的傳輸量,提高網(wǎng)頁(yè)瀏覽速度。所以應(yīng)努力把所有復(fù)雜的視圖改為SP,盡量減少視圖量,減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān),提高數(shù)據(jù)庫(kù)的執(zhí)行速度。
(2)對(duì)于復(fù)雜報(bào)表的支持有限
水晶報(bào)表工具擁有直觀圖形化的設(shè)計(jì)界面和強(qiáng)大的公式處理能力,但對(duì)復(fù)雜報(bào)表的支持還不夠。由于水晶報(bào)表不是采用單元格的方式,當(dāng)用戶需要合并或拆分單元格時(shí),沒(méi)有直接的方法支持。同時(shí),很難實(shí)現(xiàn)橫向報(bào)表。水晶報(bào)表是以節(jié)(Section)的形式縱向顯示的。數(shù)據(jù)表的列名顯示在頁(yè)眉節(jié),列的內(nèi)容在詳細(xì)資料節(jié)中顯示,水晶報(bào)表根據(jù)條件自動(dòng)讀出數(shù)據(jù)表數(shù)據(jù)縱向顯示并分頁(yè),這樣就造成了很多報(bào)表需要寫大量的視圖和公式才能實(shí)現(xiàn)。如做員工學(xué)歷、職稱等報(bào)表時(shí),需要統(tǒng)計(jì)26個(gè)子序列中各學(xué)歷、職稱的人數(shù),還需統(tǒng)計(jì)其中女員工、退休返聘、非城鎮(zhèn)人口的數(shù)量,由于分類條件不是來(lái)自一個(gè)字段,寫了好多公式都無(wú)法實(shí)現(xiàn),只能插入三個(gè)子報(bào)表,造成報(bào)表的格式不好看。再有,工資報(bào)表數(shù)據(jù)量大,字段多,選用A3的紙還是有點(diǎn)擠,只能不斷地縮小字體才能顯示完全。在打印工資報(bào)表時(shí),紙張不是標(biāo)準(zhǔn)的A3,B4,報(bào)表格式、頁(yè)邊距需要反復(fù)調(diào)試,連續(xù)打印報(bào)表很困難。這個(gè)問(wèn)題,通過(guò)導(dǎo)成PDF格式,自定義連續(xù)紙紙張大小,得到了解決。
通過(guò)以上分析,使用水晶報(bào)表,要充分考慮到它的優(yōu)勢(shì)與不足,要與企業(yè)自身情況相結(jié)合,在實(shí)際應(yīng)用中不斷總結(jié),實(shí)現(xiàn)它的使用價(jià)值。
參考文獻(xiàn):
[1]、張榮圣.Crystal Reports 2008水晶報(bào)表從入門到精通.電子工業(yè)出版社,2010.2