亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        FastReport Studio報表文件隱式分發(fā)的研究與實現(xiàn)

        2008-07-14 10:05:50劉耿龍
        電腦知識與技術 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報表技術研究
        測控技術(2018年8期)2018-11-25 07:42:28
        從三大報表讀懂養(yǎng)豬人的成績單
        月度報表
        中國紡織(2009年7期)2009-08-07 06:56:16
        月度報表
        中國紡織(2009年4期)2009-05-21 04:03:42
        亚洲av色香蕉一区二区三区 | 精品亚洲一区二区三区四区五区 | 18禁无遮挡羞羞污污污污网站| 国产精品无码专区av在线播放| 婷婷午夜天| 色婷婷五月综合亚洲小说| 免费网站国产| 精品囯产成人国产在线观看| 午夜精品久视频在线观看| 国产毛片三区二区一区| 国产成人亚洲精品一区二区三区| 在线观看国产成人av天堂野外| 亚洲中文字幕无码爆乳app| 欧美亚洲熟妇一区二区三区| 天天摸日日摸狠狠添| 久草视频这里有精品| 成人免费无码a毛片| 日韩精品一区二区亚洲专区| 疯狂三人交性欧美| 国产精品久久久久电影网| 国产午夜精品一区二区三区视频| 亚洲欧美另类日本久久影院| 自拍偷拍韩国三级视频| 强开少妇嫩苞又嫩又紧九色| 欧美极品jizzhd欧美| 久久久久欧洲AV成人无码国产| www.久久av.com| 精品国产色哟av一区二区三区| 国产精品二区一区二区aⅴ污介绍| 内射爽无广熟女亚洲| 中日韩欧美在线观看| 如何看色黄视频中文字幕| 中文字幕视频一区二区| av无码国产精品色午夜| 亚洲国产另类精品| 97日日碰日日摸日日澡| 中文字幕日韩人妻在线| 产美女被爽到高潮免费a| 撕开奶罩揉吮奶头视频| 日本特黄a级高清免费大片| 中文字幕一区二三区麻豆|