吳鉻,吳衛(wèi)
摘要:報(bào)表作為數(shù)據(jù)信息的發(fā)布,包括內(nèi)容和形式兩方面。本文的報(bào)表系統(tǒng)其主要特色是使用XML和XSL實(shí)現(xiàn)了報(bào)表數(shù)據(jù)和報(bào)表格式的分離,即同一報(bào)表數(shù)據(jù)可以有多種顯示樣式,這樣的數(shù)據(jù)與結(jié)構(gòu)的分離增強(qiáng)了數(shù)據(jù)的獨(dú)立性,提高了數(shù)據(jù)的共享程度。
關(guān)鍵詞:報(bào)表;獨(dú)立性;分離
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)34-9722-02
The Research and Implementation of Web Report Formed System
WU Ge1, WU Wei2
(1. School of Computer, Jiangxi Aviation Vocational & Technical College, Nanchang 330024, China; 2. Jiangxi Applied Technology of College, Ganzhou 3410000, China)
Abstract: The report is the information issue, including content and information. In the design, the mainly characteristics of this system is the separation between data and styles, namely the identical data of the report could have many displaying styles. Therefore, the separation between data and styles strengthens the data independence and enhances the data sharing degree.
Key words: Report; Independence; Separation
1 背景
在企業(yè)的信息管理中不可避免地要編制各種各樣的報(bào)表,報(bào)表是企業(yè)生產(chǎn)、銷售等各個(gè)環(huán)節(jié)的重要依據(jù)。報(bào)表就其實(shí)質(zhì)而言,是信息的發(fā)布,包括形式和內(nèi)容兩方面。形式方面,報(bào)表是表格,按照一定的格式組織。內(nèi)容方面,報(bào)表要“報(bào)告情況”,反映經(jīng)營(yíng)成果和財(cái)務(wù)狀況,報(bào)表內(nèi)容是各種各樣有用的數(shù)據(jù)。同時(shí),報(bào)表是“數(shù)據(jù)處理系統(tǒng)所預(yù)備好”的輸出文件,是總結(jié)性文件,即報(bào)表中的數(shù)據(jù)是經(jīng)過處理后的數(shù)據(jù)。隨著Internet的廣泛應(yīng)用,電子商務(wù)及ERP(Enterprise Resource Planning,企業(yè)資源計(jì)劃)得到迅猛發(fā)展,數(shù)據(jù)的采集、傳輸、交互、安全等問題顯得越來越重要。報(bào)表作為一種信息組織和展示的有利手段,是企業(yè)信息系統(tǒng)的重要組成部分。據(jù)不完全估計(jì),系統(tǒng)應(yīng)用的60%以上與報(bào)表有關(guān)。報(bào)表的生成系統(tǒng)在各行各業(yè)中都有著廣泛的用途,是進(jìn)行信息瀏覽、分析、打印的有利工具。隨著WWW技術(shù)的發(fā)展,報(bào)表生成系統(tǒng)從傳統(tǒng)的客戶/服務(wù)器結(jié)構(gòu)正逐步向Internet轉(zhuǎn)移,越來越多的報(bào)表應(yīng)用在Web環(huán)境下開發(fā)與運(yùn)行。
2 數(shù)據(jù)庫(kù)的連接
信息系統(tǒng)的主要任務(wù)是通過大量的數(shù)據(jù)獲得管理所需要的信息,這就必須存儲(chǔ)和管理大量的數(shù)據(jù)。因此建立一個(gè)良好的數(shù)據(jù)組織結(jié)構(gòu)和數(shù)據(jù)庫(kù),使整個(gè)系統(tǒng)都可以迅速、方便、準(zhǔn)確地調(diào)用和管理所需的數(shù)據(jù),是衡量信息系統(tǒng)開發(fā)工作好壞的主要指標(biāo)之一。
在本系統(tǒng)的數(shù)據(jù)庫(kù)連接中,應(yīng)用程序所采用的數(shù)據(jù)庫(kù)連接方式是使用ODBC驅(qū)動(dòng)程序,免去了配置ODBC數(shù)據(jù)源的步驟,可以利用ODBC驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)相連接。代碼如下:
<%
var conn,connstr,query;
conn=Server.CreateObject("ADODB.CONNECTION");
connstr="Driver={SQL Server};Server=(local);Database=deports;UID=sa;PWD=sql;"
conn.Open (connstr)
3 報(bào)表數(shù)據(jù)管理
報(bào)表數(shù)據(jù)管理頁面包括在系統(tǒng)管理員權(quán)限頁面里,系統(tǒng)管理員的登錄頁面使用了員工信息表。在系統(tǒng)登錄頁面里還需要引用這個(gè)表的用戶名,密碼和是否是管理員等字段進(jìn)行用戶身份鑒別。如果用戶身份通過驗(yàn)證的話,系統(tǒng)登錄頁面還要記錄用戶的詳細(xì)信息,留待以后的系統(tǒng)頁面使用。
報(bào)表數(shù)據(jù)管理是管理員權(quán)限里的功能,包括員工信息數(shù)據(jù)管理和員工工資數(shù)據(jù)管理。員工信息數(shù)據(jù)管理是管理員可以通過該管理頁面查看所有的員工信息,然后根據(jù)需要,對(duì)數(shù)據(jù)進(jìn)行不同的操作。在員工信息數(shù)據(jù)管理頁面中,首先顯示瀏覽,然后以表格的形式顯示信息,它需要從數(shù)據(jù)庫(kù)中讀取記錄。首先設(shè)定數(shù)據(jù)庫(kù)的連接,以及返回的數(shù)據(jù)集。然后是查詢員工信息表里面的所有記錄查詢出來,最后獲取所有的值,然后將每條記錄的所有字段都賦予特定變量的值,顯示出來。這里為了方便瀏覽,還設(shè)置了分頁功能。員工工資數(shù)據(jù)管理的設(shè)計(jì)過程類似于員工信息數(shù)據(jù)管理。
4 報(bào)表樣式設(shè)計(jì)
報(bào)表樣式設(shè)計(jì)屬于后臺(tái)設(shè)計(jì),XML報(bào)表數(shù)據(jù)會(huì)按照設(shè)計(jì)好的樣式自動(dòng)展示出來。Web報(bào)表生成系統(tǒng)實(shí)現(xiàn)的是報(bào)表數(shù)據(jù)和報(bào)表格式的分離,XML報(bào)表數(shù)據(jù)文檔里沒有任何關(guān)于格式方面的信息,為XML文檔提供信息的是XSL樣式表,這就意味著同一報(bào)表數(shù)據(jù)可以有多種顯示樣式,方便用戶根據(jù)需要對(duì)報(bào)表進(jìn)行瀏覽。般的報(bào)表可以劃分為八個(gè)區(qū),分別為:頁頭、頁尾、標(biāo)題欄、報(bào)表頭、報(bào)表體、匯總帶,分組頭,分組尾。針對(duì)具體的某一報(bào)表,可能會(huì)只有其中的幾個(gè)區(qū)。針對(duì)于本系統(tǒng)中的報(bào)表設(shè)計(jì),劃分為六個(gè)區(qū):頁頭、頁尾、報(bào)表標(biāo)題、報(bào)表頭、報(bào)表體、匯總帶。頁頭區(qū)設(shè)計(jì)的是單位名稱和報(bào)表日期;頁尾區(qū)設(shè)計(jì)的是報(bào)表的相關(guān)信息,如報(bào)表制作和審核的相關(guān)人員;報(bào)表標(biāo)題區(qū)是顯示在報(bào)表開始處,設(shè)計(jì)的是報(bào)表名;報(bào)表頭區(qū)設(shè)計(jì)的是報(bào)表頭部,如員工號(hào)、姓名等;匯總帶區(qū)設(shè)計(jì)的是報(bào)表數(shù)據(jù)的總結(jié),如金額、總?cè)藬?shù)等。本系統(tǒng),對(duì)同一報(bào)表數(shù)據(jù)設(shè)計(jì)了2種顯示樣式:橫向和縱向。
4.1 橫向顯示
XSL樣式表本質(zhì)上是一個(gè)XML文件,因此,它遵循XML的所有規(guī)則和格式。XSL樣式文件首先定義stylesheet元素,它是XSL文件的根元素,然后使用template元素定義輸出部分的模板,在模板里面對(duì)報(bào)表標(biāo)題、頁頭、報(bào)表頭、報(bào)表體、報(bào)表匯總帶、頁尾進(jìn)行設(shè)計(jì)。其中報(bào)表體部分使用for-each元素對(duì)是員工信息表的行進(jìn)行循環(huán)處理,然后用value-of元素返回節(jié)點(diǎn)的值,即員工號(hào)、姓名等員工信息的值,匯總帶部分使用count 函數(shù)統(tǒng)計(jì)報(bào)表本頁人數(shù)和報(bào)表總?cè)藬?shù)。以下是部分代碼: