馮亞麗,王 錚 (東北石油大學計算機與信息科學學院,黑龍江大慶1 6331 8)
馮正利 (大慶油田有限責任公司第四采油廠,黑龍江大慶1 63511)
目前,使用的開發(fā)工具編制出來的報表基本上都是靜態(tài)不可修改[1]。報表快速適應(yīng)需求變化的能力差,往往滯后于企業(yè)的變化與發(fā)展。目前流行的Web報表開發(fā)工具在完成報表,尤其是結(jié)構(gòu)樣式復(fù)雜的報表時存在著一定的困難。一般網(wǎng)頁上的報表,如果結(jié)構(gòu)樣式需要修改或形成一個新的報表,只能求助于站點維護人員重新編寫程序和設(shè)計報表,這給具體的使用帶來了不便。為解決以上問題,筆者提出一種基于Web的動態(tài)報表定制模型,并設(shè)計了一個實際可用的基于Web的動態(tài)報表定制系統(tǒng)。
根據(jù)對動態(tài)報表的系統(tǒng)分析,筆者設(shè)計報表的功能模塊如圖1所示。將報表系統(tǒng)的功能分為報表生成模塊、導(dǎo)出和打印模塊及管理模塊。報表生成模塊根據(jù)用戶需求引導(dǎo)用戶選擇合適自己的模版,選擇要產(chǎn)生的報表數(shù)據(jù)。報表導(dǎo)出和打印模塊,向提供用戶多種導(dǎo)出格式和打印模式,方便用戶選擇。報表管理模塊實現(xiàn)對報表的編輯和刪除等報表信息的管理。
圖1 報表功能模塊圖
在該系統(tǒng)中共有6種報表模版,分別為單表、多表、交叉表、向下鉆取表、復(fù)雜表和中國式報表。下面主要介紹中國式報表的實現(xiàn)。
中國式報表是系統(tǒng)中最復(fù)雜的一個表樣式,表的結(jié)構(gòu)包含表標題、一級列標題、二級列標題、一級行標題、二級行標題。所謂的動態(tài)是指可以任意選擇一級列以及該列所包含的任意的二級列,對于行來說也可以任意選擇。
1)新建DateSet命名為Shiyou,在數(shù)據(jù)集中新建一個DataTable命名為 “syou”,表內(nèi)有10個列,s0~s2類型為string,其他類型為int。
2)創(chuàng)建一個.rpt文件,右擊選擇 “數(shù)據(jù)庫”→“數(shù)據(jù)庫專家”。在 “數(shù)據(jù)庫專家”窗口 (見圖2)中,展開 “項目數(shù)據(jù)”,展開 “ADO.Net數(shù)據(jù)集” →“Shiyou”選擇 “Shiyou”下的表,將表添加到 “選定的表”中。
3)在報表設(shè)計器中,新建參數(shù) “?hang0-?hang3”用來存儲一級列名,“?s0-?s9”用來存儲二級列名。詳細資料下的 “s0-s9”為數(shù)據(jù)集中DataTabel中的列,用來存儲表數(shù)據(jù)。設(shè)置文本字體顏色、樣式,同時為文本字段添加左右上下邊框,如圖3所示。
圖2 數(shù)據(jù)庫專家
圖3 設(shè)計報表模版
報表管理模塊的實現(xiàn)相對比較簡單,在界面中添加DropDownList控件和GridView控件,同時將這2個空間相關(guān)聯(lián)。這樣通過動態(tài)選擇DropDownList中的表名,在GridView中顯示表數(shù)據(jù)信息。表的管理功能是與生成模塊分開的,它的管理功能是對基本表而言的。在生成的表中,右側(cè)有3項分別為:編輯、選擇、刪除。
當對表進行編輯時,表的字段處于可編輯狀態(tài)。修改后點擊 “更新”則修改后的信息寫入到數(shù)據(jù)庫中,并在頁面上再次顯示出來。若點擊 “取消”則表保持修改前的內(nèi)容。當點擊刪除時,會彈出對話框詢問是否要刪除,點擊 “確定”則對應(yīng)行從表中刪除,并將表更新信息寫入到數(shù)據(jù)庫中,點擊 “取消”則對應(yīng)行不被刪除。
報表的導(dǎo)出與打印是報表查看器自帶的功能,很方便用戶是使用??蓪?dǎo)出為Word、Excel、CrystalReports、Acrobat、MS Excel 97-2000、RTF格式。可供用戶自由選擇。
系統(tǒng)實現(xiàn)了基于WEB動態(tài)報表定制功能,有6個從簡單到復(fù)雜的報表模版供用戶選擇,用戶可根據(jù)需求生成報表。此外,系統(tǒng)支持多種輸出發(fā)布方式,支持多種文件轉(zhuǎn)換,可對生成的報表所需的基本表進行編輯、刪除等操作。但系統(tǒng)中仍存在不足,如報表的模版數(shù)量有限,不能滿足用戶特殊需求;報表的格線是用文本的邊框來代替,生成的報表不夠美觀;報表的管理功能模塊相對簡單。這些都有待進一步完善。
[1]柴欣.基于Web的健康檢查報告報表生成系統(tǒng) [D].大連:大連理工大學,2006.