• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于B/S結(jié)構(gòu)遠程web報表打印技術(shù)的研究與實現(xiàn)

      2009-07-05 10:02
      現(xiàn)代經(jīng)濟信息 2009年23期
      關(guān)鍵詞:規(guī)整控件報表

      周 屹

      摘要:本系統(tǒng)使用XML作為報表的描述語言,利用.NET技術(shù)編寫打印控件。在打印報表時,把打印控件和報表傳遞給客戶端(瀏覽器)。系統(tǒng)根據(jù)用戶的要求,結(jié)合不同報表模板自動、動態(tài)的生成相應報表文件并完成打印。系統(tǒng)提供了強大的數(shù)據(jù)篩選、分析功能,為用戶決策提供了進一步支持。

      關(guān)鍵詞:WEB報表XML.NET控件打印

      隨著信息技術(shù)的普及與發(fā)展,在管理信息系統(tǒng)中,報表打印,作為不可缺少的一部分已被我們接受。可以這樣說,我們的應用系統(tǒng)絕大多數(shù)都涉及到報表的打印問題。

      一、B/s結(jié)構(gòu)及報表打印的主要困難

      因特網(wǎng)的出現(xiàn)給人們信息交流帶來了一場新的革命,通過它,人與人之間的時空距離大大縮短,工作效率大大提高。由于信息共享與效率提高的需要,用于企業(yè)內(nèi)部的Clien/Server結(jié)構(gòu)的應用程序已逐漸不能滿足人們的需要。越來越多的Browser/Server結(jié)構(gòu)的應用程序被提了出來。雖然B/S結(jié)構(gòu)的誕生帶來了不少好處,但也有許多不足。其中一個重要的問題是,報表打印明顯不如以前靈活、規(guī)范。許多普通的功能,如紙張的換頁排版、復雜報表的精確定位等,都無法做到像C/S結(jié)構(gòu)下那樣方便。要打印一張現(xiàn)在瀏覽器上看到的報表,其打印方式將僅僅是按照普通的頁面來處理,每一頁的頁眉、頁腳、標題及表頭都無法根據(jù)用戶的要求來實現(xiàn),特別是對于一些復雜報表和需要套打的報表更是無能為力。

      目前解決WEB報表打印的途徑:水晶報表、使用現(xiàn)成的打印控件、AetiveX控件。

      二、B/S結(jié)構(gòu)下遠程web報表打印系統(tǒng)的設(shè)計

      (一)系統(tǒng)總體結(jié)構(gòu)。整個系統(tǒng)分成了三大部分。第一部分,為報表設(shè)計用戶根據(jù)自己的需要設(shè)計出相應的報表模板存入數(shù)據(jù)庫中。第二部分,為報表生成部分。用戶選擇相應模板,服務器解析相應模板并且結(jié)合用戶輸入的一些參數(shù),動態(tài)地生成了我們所需要的報表文件。第三部分,即報表的打印過程,就是分別把打印控件和第二部分中生成的報表文件傳送到客戶端,在本地進行解析打印,直接控制打印機進行輸出的過程。

      (二)系統(tǒng)工作流程。對整個系統(tǒng)的工作流程,也分三大部分進行闡述。其中報表生成器部分僅對規(guī)整報表適用。

      1、報表設(shè)計器部分。在本系統(tǒng)中,只是對規(guī)整報表設(shè)計器進行了實現(xiàn),具體步驟和方法如下:

      首先,用戶在瀏覽器中輸入數(shù)據(jù)庫名稱,遠程連接數(shù)據(jù)庫服務器。若連接成功,則用該庫中的所有表名動態(tài)地填充下拉列表框,用戶從此下拉列表中選擇所需的數(shù)據(jù)表。第二步,輸入頁面設(shè)置信息。第三步,輸入報表的列數(shù)。第四步,輸入報表名稱和附加條目。第五步,點擊完成按鈕,生成報表模板存入數(shù)據(jù)庫中。

      2、報表文件生成部分。(1)把模板數(shù)據(jù)庫中現(xiàn)有的所有報表模板的名稱動態(tài)地填入下拉列表框中供用戶選擇。(2)客戶端選擇所需打印的報表模板。(3)根據(jù)提取出的seleet語句,連接數(shù)據(jù)庫服務器,生成我們所需要的數(shù)據(jù)集。(4)根據(jù)第二步中提取出的查詢字段接口,動態(tài)生成報表的查詢頁面。(5)動態(tài)地生成報表文件,供打印使用。

      3、報表的打印部分。無論是報表設(shè)計器還是報表生成器,它們最終的結(jié)果都是為了生成符合我們規(guī)定的XML報表文件,把它傳輸?shù)娇蛻舳诉M行打印。而完成這些打印工作的則是通過我們的編寫的打印控件進行的。通過打印控件對報表文件的解析和對打印機的控制,來實現(xiàn)我們所需要的諸如分頁、精確定位、格式控制等一系列功能。

      (三)系統(tǒng)解決的主要問題。本系統(tǒng)的出發(fā)點主要是為了解決B/S結(jié)構(gòu)下報表打印的一些難點問題;為一般的小型系統(tǒng)不花費大量精力和財力的前提下,很好地解決B/S結(jié)構(gòu)下遠程報表打印的一些常見問題,主要包括以下幾種:解決規(guī)整報表的分頁問題、頁碼的打印。附加條目和復雜報表的精確定位、簡單套打的實現(xiàn)、對簡單的圖形報表的打印輸出做了一些初步的研究。

      三、報表結(jié)構(gòu)的設(shè)計

      (一)幾種常見的報表類型

      1、規(guī)整報表:規(guī)整報表又稱長報表。它通常要分幾頁顯示,也是最常見的報表,其最大的特點是在固定的表頭下重復著若干行類型相同的記錄。

      2、復雜報表:之所以稱之為復雜報表,是因為它的行列的分布不像規(guī)整報表那樣整齊、有規(guī)律。

      3、套打報表:所謂套打,就是指在打印紙的規(guī)定位置上輸入相應的信息。與其它報表打印不同的是,它并不要完整的打印出報表的標題、邊框等信息,我們需要的是在規(guī)定的地方打印出相應的數(shù)據(jù)就可以了。

      (二)報表設(shè)計器的實現(xiàn)

      1、設(shè)計思路、要生成一個報表模板,首先確定的是這個報表所需的數(shù)據(jù)源;接下來確定頁面設(shè)置中的一系列信息;確定報表的列數(shù);設(shè)置報表名稱、附加條目信息、各列的標題、各列的寬度;為每列選擇對應的字段:選擇用作篩選數(shù)據(jù)用的接口字段與需要進行小計的字段。我們把所有的這些信息提取出來,按照相應的規(guī)則組成XML模板。

      2、步驟與方法。1) 先需要確定報表設(shè)計的數(shù)據(jù)源。2) 列出數(shù)據(jù)庫中的所有表名,動態(tài)地填充到下拉列表框中,供用戶選擇。3) 輸入頁面設(shè)置信息和報表的列數(shù)。4) 彈出報表設(shè)計界面。5) 報表模板的生成。

      四、結(jié)論與展望

      本系統(tǒng)主要完成了遠程報表打印時,瀏覽器打印功能無法完成的一些功能。通過自己編寫的打印控件在客戶端對XML格式的報表文件進行格式解析,直接控制本地打印機進行輸出。對于打印控件和報表文件,是利用H,ITP協(xié)議通過默認的80端口進行傳輸,從一定程度上提高了系統(tǒng)的安全性。

      雖然本系統(tǒng)只給出了簡單的規(guī)整報表設(shè)計器,但是其它類型的報表模板的結(jié)構(gòu)設(shè)計是作者對現(xiàn)有的比較流行的設(shè)計器生成的模板文件進行分析后總結(jié)出來的,以后完全可以在B/S結(jié)構(gòu)下完成其它類型報表的設(shè)計器。在結(jié)構(gòu)的組織上,本系統(tǒng)充分考慮到以后的擴展,如果我們要增加其它類型報表的打印,只要定義出相應的格式控制標簽和增加相應的解析程序,對原來的結(jié)構(gòu)無需做大的改動。

      雖然打印控件是用.NET技術(shù)編寫的,但是它的運行對服務器端沒有任何要求。如果服務器端能夠用其它的方式提供相應格式的XML報表文件,利用此打印控件將不會對原來的服務器系統(tǒng)造成任何負擔。而對遠程客戶端,則不需要在打印時進行下載注冊或是安裝特定的打印系統(tǒng)。

      猜你喜歡
      規(guī)整控件報表
      300kt/a硫酸系統(tǒng)規(guī)整填料使用情況簡介
      LabWindows/CVI中Excel報表技術(shù)研究
      從三大報表讀懂養(yǎng)豬人的成績單
      電梯的建筑化藝術(shù)探索
      基于發(fā)音機制的貪婪自適應語音時長規(guī)整算法
      ASP.NET服務器端驗證控件的使用
      月度報表
      月度報表
      Spreadsheet控件在Delphi數(shù)據(jù)庫系統(tǒng)中的編程與應用
      漾濞| 驻马店市| 刚察县| 乌兰浩特市| 布拖县| 塔河县| 凤翔县| 梓潼县| 库尔勒市| 北票市| 建阳市| 娄底市| 民勤县| 衡水市| 宁波市| 沅江市| 墨竹工卡县| 贡觉县| 陇西县| 南陵县| 富宁县| 兴文县| 陕西省| 凌源市| 临颍县| 定南县| 卓尼县| 徐汇区| 麟游县| 怀仁县| 稻城县| 平武县| 余姚市| 锦屏县| 全椒县| 宁安市| 内乡县| 海宁市| 寿光市| 安化县| 林州市|