• 
    

    
    

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

      ?

      FastReport?。樱簦酰洌椋飯蟊砦募[式分發(fā)的研究與實現(xiàn)

      2008-07-14 10:05劉耿龍
      電腦知識與技術 2008年18期
      關鍵詞:報表

      摘要:在C/S/D模式下,由客戶端讀取并顯示在數(shù)據(jù)庫中存儲的FastReport Studio報表,實現(xiàn)報表文件的隱式分發(fā),解決了在傳統(tǒng)軟件分發(fā)模式下更新報表文件時重復分發(fā)的問題。

      關鍵詞:軟件分發(fā);FastReport Studio;ADO;VB;報表

      中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)18-2pppp-0c

      Research and Implementation for Implicit Distribution of FastReport Studio Report File

      LIU Geng-long

      (Xuzhou College of Industrial Technology,JiangSu 221140,China)

      Abstract:In the C/S/D mode, the client read and display FastReport Studio report which stored in the database,realize the implicit distribution of report file,resolved the question of redistribute the updated report file in traditional software distribution model.

      Key words:Software distribution;FastReport Studio;ADO;VB;Report

      1 引言

      軟件分發(fā)是軟件交付的重要一步,開發(fā)者通過安裝工具將軟件運行所需的文件打包形成安裝包,交付給最終用戶使用。在C/S/D(客戶端/服務器/數(shù)據(jù)庫)模式下,在基于FastReport Studio(以下簡稱FRS)報表工具開發(fā)應用軟件時,如采用傳統(tǒng)的軟件分發(fā)模式,當FRS報表文件更新時,必須重新打包進行分發(fā)。上述FRS報表文件的顯式分發(fā)模式存在的缺點不言而喻,解決方法是:將FRS報表文件存儲到數(shù)據(jù)庫中,客戶端通過FRS提供的程序接口讀取并顯示報表,從而實現(xiàn)FRS報表文件的隱式分發(fā)。

      2 實現(xiàn)原理

      FRS提供了LoadReportFromStream方法,允許開發(fā)工具 讀取以Stream流(二進制數(shù)據(jù)流)存在的FRS報表,在此前提下,通過ADO對象將FRS報表文件存儲到數(shù)據(jù)庫中,即可實現(xiàn)FRS報表文件的在客戶端的分發(fā)。如更新數(shù)據(jù)庫中FRS報表Stream流,則實現(xiàn)了FRS報表在客戶端的再次分發(fā)(圖1)。

      圖1 原理圖

      3 實現(xiàn)過程

      3.1 FRS報表設計

      利用FRS外部報表設計器(FastReport Designer)生成報表文件demo.fr3。設計布局如圖2所示:

      圖2 demo.fr3設計布局

      3.2 數(shù)據(jù)庫設計

      在SQL Server中創(chuàng)建數(shù)據(jù)庫datademo,創(chuàng)建一個登錄帳號demouser,密碼demouser,默認登錄數(shù)據(jù)庫為datademo,設置角色為db_owner。

      在datademo中創(chuàng)建一個數(shù)據(jù)表tb_frs,表結構定義如表1所示,并輸入測試數(shù)據(jù)(圖3):

      表1 tb_frs表結構定義

      圖3 tb_frs表中的數(shù)據(jù)

      3.3 程序設計

      3.3.1 FRS報表文件的數(shù)據(jù)庫存儲及更新

      利用ADO 對象中的Stream對象以二進制模式讀取FRS報表文件,通過更新記錄集的方式將FRS報表文件以Stream流存儲到數(shù)據(jù)庫中,基于VB的核心代碼如下:

      '定義數(shù)據(jù)庫對象變量

      Dim objDBConnection As ADODB.Connection

      Dim objDBRecordSet As ADODB.Recordset

      Dim objDBStream As ADODB.Stream

      '實例化數(shù)據(jù)庫對象變量

      Set objDBConnection = New ADODB.Connection

      Set objDBRecordSet = New ADODB.Recordset

      Set objDBStream = New ADODB.Stream

      '打開數(shù)據(jù)庫

      objDBConnection.Open "Provider=SQLOleDB;Server=127.0.0.1;UID=demouser;PWD=demouser;DataBase=datademo"

      '操作ADO Steam對象讀取已保存的FRS報表文件

      With objDBStream

      .Type = adTypeBinary'指定數(shù)據(jù)操作類型為二進制

      .Open'打開Steam對象

      .LoadFromFile App.Path + "demo.fr3"'讀取存放在程序路徑下的demo.fr3報表文件

      End With

      '將ADO Steam對象中讀取的FRS報表文件Stream流寫入數(shù)據(jù)表

      With objDBRecordSet

      .Open "select frs_data from tb_frs where frs_id=1", objDBConnection, 1, 3'打開記錄集

      .Fields("frs_data") = objDBStream.Read'指定更新表字段

      .Update'更新記錄集

      End With

      '關閉數(shù)據(jù)庫對象,釋放內存

      objDBRecordSet.Close

      objDBStream.Close

      objDBConnection.Close

      Set objDBRecordSet = Nothing

      Set objDBStream = Nothing

      Set objDBConnection = Nothing

      '完成提示

      MsgBox "demo.fr3報表文件已經存儲到數(shù)據(jù)庫中。", vbInformation, "提示"

      3.3.2 客戶端讀取并顯示數(shù)據(jù)庫中的FRS報表

      客戶端通過FRS的LoadReportFromStream方法讀取數(shù)據(jù)庫中的FRS報表Stream流,利用ShowReport方法顯示報表(圖4),基于VB的核心代碼如下:

      '定義FRS報表對象,用于讀取和顯示FRS報表

      Dim objFRS As FastReport.TfrxReport

      '實例化FRS報表對象

      Set objFRS = New FastReport.TfrxReport

      '打開指定id的FRS報表記錄集,對應測試數(shù)據(jù)見圖3

      objDBRecordSet.Open "select frs_data from tb_frs where frs_id=1", objDBConnection, 1, 3

      '用ADO Stream對象讀取數(shù)據(jù)表中的FRS報表文件Stream流

      With objDBStream

      .Mode = adModeReadWrite'打開Stream對象讀寫模式

      .Type = adTypeBinary'指定數(shù)據(jù)操作類型為二進制

      .Open'打開Stream對象

      .Write objDBRecordSet("frs_data")'將FRS報表Stream流寫入到Stream對象中

      End With

      '用FRS對象的LoadReportFromStream方法讀取ADO Stream對象的Stream流并顯示報表,原FRS報表文件見圖2

      With objFRS

      .LoadReportFromStream objDBStream'指定FRS以Stream流方法加載報表

      .ShowReport'顯示報表

      End With

      圖4 客戶端顯示打印預覽窗口

      4 結束語

      在軟件分發(fā)中實現(xiàn)FRS報表文件的隱式分發(fā),減少了應用程序中FRS報表的后期維護量,對初步接觸FRS報表工具的開發(fā)者具有較高的參考價值,同時對開發(fā)者優(yōu)化軟件分發(fā)有一定的借鑒作用。

      參考文獻:

      [1]如何使用ADO Stream對象訪問和修改 SQL Server BLOB 數(shù)據(jù)[EB/OL].http://support.microsoft.com/kb/258038/zh-cn,2004-09-01.

      [2]FastReport Studio - Programmer manual[EB/OL].http://fast-report.com/pbc_download/FastReport Studio Programmers Manual (EN).pdf,2006-09.

      [3]莫衛(wèi)東.Visual Basic 6.0高級編程技巧-ADO數(shù)據(jù)訪問篇[M].西安:西安交通大學出版社,2000.

      收稿日期:2008-04-12

      作者簡介:劉耿龍(1975-),男,江蘇徐州人,工程師,研究方向:數(shù)據(jù)庫系統(tǒng)及教育管理應用軟件開發(fā)。

      猜你喜歡
      報表
      LabWindows/CVI中Excel報表技術研究
      從三大報表讀懂養(yǎng)豬人的成績單
      月度報表
      月度報表
      新蔡县| 奉化市| 丽水市| 平昌县| 射洪县| 抚宁县| 垫江县| 昌宁县| 霍城县| 灌云县| 丹阳市| 崇明县| 商都县| 延吉市| 浠水县| 滁州市| 乌拉特前旗| 泸水县| 汶上县| 航空| 思南县| 孟连| 榆社县| 新宁县| 耒阳市| 大同市| 天祝| 肃北| 皮山县| 玉林市| 泾源县| 汤原县| 寻甸| 临泉县| 青州市| 云梦县| 恩平市| 隆化县| 苏州市| 崇义县| 定陶县|