亚洲免费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原创| 国产成人综合日韩精品无码| 亚洲午夜精品久久久久久人妖| 亚洲 国产 哟| 久久日本三级韩国三级| 国产一级淫片免费播放电影| 亚洲av第二区国产精品| 亚洲最大成人综合网720p| 日韩一卡2卡3卡4卡新区亚洲| 国产又黄又大又粗的视频| 中文字幕无码日韩欧毛| 美女把内衣内裤脱了给男人舔| 日本精品一区二区三区二人码| 欧美精品人人做人人爱视频| 麻豆久久五月国产综合| 久久精品国产亚洲av蜜臀久久| 日韩 亚洲 制服 欧美 综合| 18分钟处破好疼哭视频在线观看 | 吃下面吃胸在线看无码| 国产女主播视频一区二区三区| 东北熟妇露脸25分钟| 成人欧美一区二区三区| 日韩第四页| 亚洲国产线茬精品成av| 人妻精品人妻一区二区三区四区| 最新日本一道免费一区二区| 日日摸夜夜添夜夜添无码免费视频 | yy111111少妇影院| 开心五月骚婷婷综合网| 亚洲乱码日产精品一二三| 欧美精品一区二区蜜臀亚洲| 国产精品久久码一区二区| 国产aⅴ丝袜旗袍无码麻豆 | www.日本一区| 日本免费看片一区二区三区| 美女网站免费福利视频| 秒播无码国产在线观看| 日韩人妖一区二区三区| 男女激情视频网站在线| 国产激情久久久久久熟女老人av|