999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2008-07-14 10:05:50劉耿龍
電腦知識與技術(shù) 2008年18期

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

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

中圖分類號:TP311文獻(xiàn)標(biāo)識碼: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(客戶端/服務(wù)器/數(shù)據(jù)庫)模式下,在基于FastReport Studio(以下簡稱FRS)報表工具開發(fā)應(yīng)用軟件時,如采用傳統(tǒng)的軟件分發(fā)模式,當(dāng)FRS報表文件更新時,必須重新打包進(jìn)行分發(fā)。上述FRS報表文件的顯式分發(fā)模式存在的缺點不言而喻,解決方法是:將FRS報表文件存儲到數(shù)據(jù)庫中,客戶端通過FRS提供的程序接口讀取并顯示報表,從而實現(xiàn)FRS報表文件的隱式分發(fā)。

2 實現(xiàn)原理

FRS提供了LoadReportFromStream方法,允許開發(fā)工具 讀取以Stream流(二進(jìn)制數(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報表設(shè)計

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

圖2 demo.fr3設(shè)計布局

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

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

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

表1 tb_frs表結(jié)構(gòu)定義

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

3.3 程序設(shè)計

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

利用ADO 對象中的Stream對象以二進(jìn)制模式讀取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ù)操作類型為二進(jìn)制

.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

'關(guān)閉數(shù)據(jù)庫對象,釋放內(nèi)存

objDBRecordSet.Close

objDBStream.Close

objDBConnection.Close

Set objDBRecordSet = Nothing

Set objDBStream = Nothing

Set objDBConnection = Nothing

'完成提示

MsgBox "demo.fr3報表文件已經(jīng)存儲到數(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報表記錄集,對應(yīng)測試數(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ù)操作類型為二進(jìn)制

.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 客戶端顯示打印預(yù)覽窗口

4 結(jié)束語

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

參考文獻(xiàn):

[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].西安:西安交通大學(xué)出版社,2000.

收稿日期:2008-04-12

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

主站蜘蛛池模板: 97无码免费人妻超级碰碰碰| 亚洲欧洲自拍拍偷午夜色无码| 91精品啪在线观看国产91九色| 欧美国产在线看| 日本人妻一区二区三区不卡影院 | 亚洲国产日韩一区| 免费A级毛片无码免费视频| 永久免费无码日韩视频| 国产精品尤物铁牛tv| 久久国产高潮流白浆免费观看 | 国产杨幂丝袜av在线播放| 曰韩人妻一区二区三区| 国产丰满大乳无码免费播放 | 国产综合色在线视频播放线视 | 国产第一页亚洲| 中文字幕亚洲精品2页| 岛国精品一区免费视频在线观看| 免费在线国产一区二区三区精品| 国产玖玖视频| 精品少妇人妻av无码久久| 亚洲中文无码h在线观看| 欧美国产菊爆免费观看| 凹凸精品免费精品视频| 广东一级毛片| 色婷婷丁香| 国产美女在线免费观看| 亚洲精品大秀视频| 欧美精品高清| 欧美午夜精品| 极品私人尤物在线精品首页| 日韩av电影一区二区三区四区| 国产精品自拍露脸视频| 亚洲第一色网站| 91国内视频在线观看| 亚洲美女视频一区| 国产日韩欧美精品区性色| 国产欧美日韩免费| 男人天堂亚洲天堂| 精品天海翼一区二区| 丰满人妻一区二区三区视频| 国产精品偷伦在线观看| 亚洲一区二区视频在线观看| 激情在线网| 欧美在线中文字幕| 亚洲av综合网| 欧美在线一二区| 2021国产乱人伦在线播放| 无码aaa视频| 黄网站欧美内射| 国产一区二区三区免费观看 | 第九色区aⅴ天堂久久香| 99热最新在线| 专干老肥熟女视频网站| 一级爆乳无码av| 九九热视频在线免费观看| 亚洲综合色在线| 伊人久久久大香线蕉综合直播| 少妇极品熟妇人妻专区视频| 久久精品电影| 制服无码网站| 熟妇丰满人妻| 亚洲黄色高清| 国产资源站| 欧美色99| 国产微拍精品| 国产无码制服丝袜| 亚洲日韩精品欧美中文字幕| 中文字幕无线码一区| 亚洲香蕉久久| 综合社区亚洲熟妇p| 四虎亚洲国产成人久久精品| 国产成人亚洲精品色欲AV | 一级毛片免费观看久| 国产一国产一有一级毛片视频| 波多野结衣AV无码久久一区| 毛片免费网址| 欧美日韩国产精品va| 日本人妻丰满熟妇区| 日本午夜精品一本在线观看| 美女一级免费毛片| 91探花国产综合在线精品| 2020精品极品国产色在线观看|