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

在VB中集成水晶報表的RDC方法

2016-05-30 15:02:34隗燕琳陳敬超陳進明李貴乙張華峰
軟件工程 2016年3期
關(guān)鍵詞:數(shù)據(jù)庫設(shè)計

隗燕琳 陳敬超 陳進明 李貴乙 張華峰

摘 要:根據(jù)Visual Basic便捷的界面開發(fā)能力及CrystalReport強大的數(shù)據(jù)庫報表設(shè)計能力,研究探討了兩者相結(jié)合的集成編程方法,并分析了各種集成方法中數(shù)據(jù)格式,數(shù)據(jù)交互機制及具體應(yīng)用實例。采用兩者混合編程對數(shù)據(jù)庫軟件的開發(fā),提高開發(fā)質(zhì)量和效率具有重要意義。

關(guān)鍵詞:混合編程;Visual Basic;CrystalReport;數(shù)據(jù)報表

中圖分類號:TP312 文獻標識碼:A

Abstract:In term of the respective advantages of Crystal Report and Visual Basic software,researches are done in this paper on programming with Crystal Report and Visual Basic software together.This paper shows different methods in programming with the two kinds of software and also gives simple illustrations about different methods.It has great importance to help programmers with high quality and efficiency.

Keywords:admixture programming;visual basic;crystal report;data report

1 引言(Introduction)

數(shù)據(jù)庫軟件的編寫,要求軟件開發(fā)者不僅具有較高的數(shù)據(jù)庫報表和查詢功能的設(shè)計能力,而且要具有較高的軟件操作界面的設(shè)計能力。使用任何流行的Windows開發(fā)工具開發(fā)自定義應(yīng)用程序時,若用自己的方法通過逐條訪問數(shù)據(jù)庫記錄來開發(fā)報表功能,那些復(fù)雜的數(shù)據(jù)格式、字體管理、圖形顯示,以及其他和Windows相關(guān)的顯示問題將變得非常重要,這是一個編程挑戰(zhàn)。而報表開發(fā)軟件又不具有實用的界面開發(fā)功能。這就要求開發(fā)者需將各具特點的軟件集成,進行混合編程,才能研發(fā)出靈活、高效、實用的數(shù)據(jù)庫軟件系統(tǒng)。

Visual Basic是一種功能強大的編程語言,Windows下的大多數(shù)應(yīng)用程序的開發(fā),它都可以勝任,而且Visual Basic具有易學(xué)易用,編程簡單,程序集成化程度高及界面可視化能力強的特點[1]。但是,Visual Basic中Data Report Designer的報表設(shè)計功能十分不靈活,需要建立一個包含所需查詢數(shù)據(jù)的臨時數(shù)據(jù)表[2],這極大增加了程序開發(fā)的工作量及程序的執(zhí)行時間。此外選擇使用VB中綁定的Crystal Reports版本,在使用上會受到很多限制[3]。

Crystal Reports中的RDC提供了很好的功能以及簡單的使用方法,使用其面向?qū)ο蟮慕涌冢梢暂p松地完成許多復(fù)雜的報表定制工作,而不需要使用那些繁瑣的Windows API。RDC同時也提供了嵌入VB的報表設(shè)計功能。雖然在簡單的應(yīng)用中,你會發(fā)現(xiàn)ActiveX控件是集成報表的好方法,但這種設(shè)計方法不利于功能的更新,因為很多功能在Crystal Reports 6.0以后就不更新了。

顯然,如果將Crystal Reports強大的報表設(shè)計功能和VB在界面設(shè)計方面的優(yōu)勢結(jié)合起來,采用程序集成的方式,將提高程序的設(shè)計效率,縮短設(shè)計周期。本文著重分析兩者集成開發(fā)數(shù)據(jù)庫軟件的方法。

2 RDC集成編程技術(shù)(RDC integrated programming technology)

Crystal Report的Report Designer Component(RDC)可以使報表設(shè)計和靈活的報表集成都在VB的集成開發(fā)環(huán)境中實現(xiàn)。

一般使用水晶報表進行報表開發(fā)時,都要先連接數(shù)據(jù)庫。下面以“僅字段定義”“ODBC(RDO)”“Access/Excel(DAO)”這三種常用數(shù)據(jù)源為例,闡述RDC集成編程技術(shù)。軟件集成環(huán)境為VB6.0、CrystalReport9。

2.1 采用“僅字段定義”作為數(shù)據(jù)來源編程

如果從事下層數(shù)據(jù)庫軟件開發(fā),一般是不允許水晶報表直接訪問數(shù)據(jù)庫的,而是通過開發(fā)的軟件返回數(shù)據(jù)給水晶報表。此時可使用水晶報表中的“僅字段定義”作為數(shù)據(jù)來源,來徹底擺脫與數(shù)據(jù)庫的直接聯(lián)系,從而開發(fā)出便于發(fā)布、移植以及擺脫數(shù)據(jù)庫限制的報表系統(tǒng)[4]。

第一步:在CrystalReport9中建立報表模板

在CrystalReport9中新建一個報表(圖1),在“Crystal Reports庫”中根據(jù)需要選擇建文檔的方法。確定后點擊“數(shù)據(jù)庫專家”中“僅字段定義”左邊的加號,創(chuàng)建字段定義文件(圖2)。

水晶報表中的字段定義功能是使用一個單獨的dll實現(xiàn)的,水晶報表默認安裝時沒有這個組件,所以可能需要重新補充安裝一下,進行定制安裝增加該功能組件。如果之前已經(jīng)創(chuàng)建過字段定義文件,可以瀏覽選取,否則就使用“創(chuàng)建文件”來創(chuàng)建新的字段文件。

添加字段時,字段名不能使用漢字,否則制作報表時將出現(xiàn)亂碼(如圖4)。字段設(shè)置完畢,點擊右上角的叉,將這個文件保存,形成字段定義文件“DataFile.ttx”。

保存完畢后,在圖3窗體上點擊“完成”然后將做好的報表模板添加到右側(cè)“選定的表”中(圖5)。點擊“確定”后,就可以設(shè)計報表模板了。此時可根據(jù)需要將字段名修改成漢字,并可添加參數(shù)字段(圖6)。

保存后形成報表模板文件“DataFile.rpt”,該文件及字段定義文件“DataFile.ttx”文件將在VB程序中加載。

第二步:在VB中加入CrystalReport9的相關(guān)文件

在VB“工程”菜單中點擊“部件”,在“控件”選項頁中勾選“Crystal Report Viewer Control 9”,將“CRViewer9”報表預(yù)覽控件布置在窗體上。

在VB“工程”菜單中點擊“引用”,勾選“Microsoft ActionX Data Objects 2.5 Library”和“Crystal Reports 9 ActiveX Designer Run Time Library”兩項庫文件。

第三步:在VB中集成CrystalReport9

首先在窗體中添加如下代碼,以聲明水晶報表應(yīng)用程序Application對象及報表Report對象:

Private objCRAppAs New CRAXDRT.Application

Private objCRReportAs New CRAXDRT.Report

然后聲明記錄集變量及報表相關(guān)變量。

Dim rstAs New ADODB.Recordset

Dim props As CRAXDRT.ConnectionProperties'報表數(shù)據(jù)源參數(shù)集

Dim prop As CRAXDRT.ConnectionProperty'報表數(shù)據(jù)源參數(shù)

構(gòu)建一個數(shù)據(jù)集,定義其中的字段類型,然后添加數(shù)據(jù)信息,實例程序如下:

rst.CursorLocation=adUseClient

With rst.Fields

.Append "XingMing",adVarChar,20

.Append "ZhiWu",adVarChar,20

.Append "ZhiCheng",adVarChar,20

.Append "GongZi",adVarChar,20

End With

rst.Open

With rst

For i=0 To 4

.AddNew

.Fields(0)=”王”&i

.Fields(2)=”職務(wù)”&i

.Fields(0)=”職稱”&i

.Fields(0)=(1000*(5-i))

.Update

Next

End With

該操作可以替換成任意的過程,最終目的就是處理成一個記錄集,作為報表的數(shù)據(jù)來源。

現(xiàn)在添加報表模板,加載報表字段定義文件,并執(zhí)行Report對象的DiscardSavedData方法清除其保持的數(shù)據(jù),將屬性值變成設(shè)計時的值。

Set objCRReport=objCRApp.OpenReport(App.Path&"\DataFile.rpt",1)

Set props=objCRReport.Database.Tables(1).ConnectionProperties

For Each prop In props

If InStr(prop.Name,"Field Definition File")>0 Then

prop.Value=App.Path&"\DataFile.ttx"

Exit For

End If

Next

Set props=Nothing

objCRReport.DiscardSavedData

我們在報表模板“DataFile.rpt”中增加了兩個參數(shù),下面要對Report對象的參數(shù)進行設(shè)置。為了讓程序運行時不出現(xiàn)參數(shù)提示框,需添加代碼:

objCRReport.EnableParameterPrompting=False

然后清理參數(shù)可能存在的參數(shù)默認值,再對參數(shù)進行賦值,添加如下代碼:objCRReport.ParameterFields(1).ClearCurrentValueAndRange

objCRReport.ParameterFields(2).ClearCurrentValueAndRange

Call objCRReport.ParameterFields(1).AddCurrentValue

("報表測試")

Call objCRReport.ParameterFields(2).AddCurrentValue

("2014-12-10")

如果此處出現(xiàn)錯誤提示,那么就要查看傳入的參數(shù)是否有值,參數(shù)的類型是否匹配,是否要進行類型轉(zhuǎn)換后才能傳入,傳入?yún)?shù)的值的序號是否對應(yīng)。

最關(guān)鍵的一步是將新建的數(shù)據(jù)集rst賦值給報表的Repor對象。

objCRReport.Database.SetDataSourcerst

然后進行報表顯示外觀設(shè)置。報表外觀相關(guān)屬性如下:

是否顯示右上角水晶報表的圖標:CRViewer1.EnableAnimationCtrl

是否顯示導(dǎo)出報表按鈕:CRViewer1.EnableExportButton

是否顯示關(guān)閉按鈕:CRViewer1.EnableCloseButton

是否顯示左側(cè)樹列表:CRViewer1.EnableGroupTree

是否顯示導(dǎo)航:CRViewer1.EnableNavigationControls

是否顯示彈出菜單:CRViewer1.EnablePopupMenu

是否顯示打印按鈕:CRViewer1.EnablePrintButton

是否顯示刷新按鈕:CRViewer1.EnableRefreshButton

是否顯示工具欄:CRViewer1.EnableToolbar

是否顯示比例調(diào)整窗口:CRViewer1.EnableZoomControl

報表顯示的樣式:CRViewer1.DisplayBackgroundEdge

報表控件是否有邊框:CRViewer1.DisplayBorder

是否顯示報表的選項卡:CRViewer1.DisplayTabs

最后指定報表來源,進行報表顯示設(shè)置,并釋放數(shù)據(jù)集變量。

CRViewer91.ReportSource=objCRReport

CRViewer91.ViewReport

Set rst=Nothing

此外,還可使用“工程”菜單中的“添加CrystalReports9”選項,這時會自動添加一個包含“Crystal Report”查看器控件的窗體,并在窗體中自動添加相關(guān)代碼。該方法的程序設(shè)計不需要使用報表數(shù)據(jù)源參數(shù),且不用添加報表模板文件,但需將上述程序中的CRAXDRT.Report類型變量用CrystalReport1類型變量替換即可。

2.2 采用“ODBC(RDO)”作為數(shù)據(jù)來源編程

ODBC(Open DataBase Connectivity)是微軟公司定制的標準編程接口,只要有相應(yīng)的ODBC驅(qū)動程序,就可以通過ODBC連接操作各種不同的數(shù)據(jù)庫。通常通過控制面板的管理工具中的ODBC Data Source來配置ODBC的數(shù)據(jù)源。所謂ODBC數(shù)據(jù)源就是命名的一組信息,包括需要連接的數(shù)據(jù)庫所在位置(可以是磁盤目錄/文件,也可以是網(wǎng)絡(luò)服務(wù)器)、對應(yīng)的ODBC驅(qū)動程序以及訪問數(shù)據(jù)庫所需要的其他相關(guān)信息,用戶可以通過數(shù)據(jù)源的名稱(DSNs,Data Source Names)來指定所需的ODBC連接。

設(shè)置好ODBC數(shù)據(jù)源后,在“數(shù)據(jù)庫專家”中點擊“創(chuàng)建新連接”中的“ODBC(RDO)”連接所設(shè)置的ODBC數(shù)據(jù)源,將所需數(shù)據(jù)表加入到“選定的表”中,然后在“數(shù)據(jù)庫字段”中選擇所需的字段,拖放到報表中設(shè)計所需的樣式。該過程可在CrystalReport9中建立報表模板形成外部的.rpt文件,或使用Project菜單中的Add CrystalReports 9選項這兩種RDC方式實現(xiàn)。需添加的程序代碼與2.1中相似,此時不需要建立臨時數(shù)據(jù)集,只需利用水晶報表的數(shù)據(jù)選擇語句選擇ODBC數(shù)據(jù)源中的數(shù)據(jù)進行報表設(shè)計。

ODBC數(shù)據(jù)源可與其他用戶網(wǎng)絡(luò)共享,添加數(shù)據(jù)選擇代碼時不用打開數(shù)據(jù)集,只需選擇數(shù)據(jù)傳遞給報表即可。此外數(shù)據(jù)源的存放地址可以隨意更改,更改后要重新設(shè)置ODBC數(shù)據(jù)源。

2.3 采用“Access/Excel(DAO)”作為數(shù)據(jù)來源編程

將Access/Excel作為數(shù)據(jù)來源時,同樣是在“數(shù)據(jù)庫專家”中點擊“創(chuàng)建新連接”,然后連接Access/Excel(DAO)數(shù)據(jù)源。設(shè)計報表的方式與2.2相同,均可在CrystalReport9中建立報表模板形成外部的.rpt文件,或使用Project菜單中的Add CrystalReports 9選項這兩種RDC方式實現(xiàn)。添加的程序代碼與2.2中相似。

Access/Excel數(shù)據(jù)源在連接時非常直接便捷,數(shù)據(jù)源存放地址可以更改,更改后要進行數(shù)據(jù)源位置更新設(shè)置。

3 結(jié)論(Conclusion)

本文詳細介紹了VB6.0和CrystalReport9兩種語言的混合編程方法,以簡單的應(yīng)用實例講解了三種常用數(shù)據(jù)源的RDC方法,并給出了程序源代碼。“僅字段定義”的數(shù)據(jù)源類型能開發(fā)出便于發(fā)布、移植以及擺脫數(shù)據(jù)庫限制的報表系統(tǒng),ODBC數(shù)據(jù)源可與其他用戶網(wǎng)絡(luò)共享,而Access/Excel數(shù)據(jù)源在連接時非常直接便捷。CrystalReport和VB結(jié)合,可以充分利用CrystalReport強大的報表設(shè)計功能和VB在圖形化界面設(shè)計方面的優(yōu)勢,大大提高程序的設(shè)計效率,縮短設(shè)計周期。

參考文獻(References)

[1] 金英姿,鄧少鹍.Visual Basic實用培訓(xùn)教程[M].北京:人民郵電出版社,2003.

[2] 劉玉山,劉寶山.VB數(shù)據(jù)庫項目設(shè)計模塊化教程[M].北京:機械工業(yè)出版社,2009.

[3] George Peck.水晶報表設(shè)計與開發(fā)大全Crystal Reports 9[M].北京:清華大學(xué)出版社,2004.

[4] 阿泰.創(chuàng)建不受數(shù)據(jù)庫限制的報表[DB].http://blog.csdn.net/babyt,2004/2015.

作者簡介:

隗燕琳(1977-),女,博士,工程師.研究領(lǐng)域:電氣工程.

陳敬超(1979-),男,碩士,工程師.研究領(lǐng)域:電氣工程.

陳進明(1965-),男,本科,高級工程師.研究領(lǐng)域:電氣工程.

李貴乙(1982-),男,本科,高級工程師.研究領(lǐng)域:電氣工程.

張華峰(1981-),男,本科,高級工程師.研究領(lǐng)域:儀器計量.

猜你喜歡
數(shù)據(jù)庫設(shè)計
何為設(shè)計的守護之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設(shè)計萌到家
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 免费国产小视频在线观看| 精品人妻AV区| 麻豆精品国产自产在线| 国产欧美日韩精品综合在线| 影音先锋亚洲无码| 欧美一级片在线| 日韩大乳视频中文字幕| 国产精品久久久久久搜索| 国产午夜人做人免费视频| 2021天堂在线亚洲精品专区| 本亚洲精品网站| 九色综合伊人久久富二代| www.日韩三级| 午夜福利无码一区二区| 色国产视频| 999精品在线视频| 九九热精品免费视频| 国产毛片高清一级国语| 亚洲av无码牛牛影视在线二区| 真实国产乱子伦视频| 美女视频黄频a免费高清不卡| 久久精品66| 久久综合色88| 最新午夜男女福利片视频| 亚洲国产日韩视频观看| 色综合天天综合| 免费看黄片一区二区三区| 亚洲AV无码一区二区三区牲色| 免费A级毛片无码无遮挡| 日韩麻豆小视频| 蜜臀AV在线播放| 精品亚洲麻豆1区2区3区| 国产精品内射视频| 亚洲免费福利视频| 免费AV在线播放观看18禁强制| 亚洲免费福利视频| 国产成人成人一区二区| av手机版在线播放| 欧美国产在线看| 午夜毛片免费观看视频 | 国产精品55夜色66夜色| 亚洲第一区精品日韩在线播放| 免费又黄又爽又猛大片午夜| 国产黄在线免费观看| 女人一级毛片| 精品国产一区二区三区在线观看| 18禁色诱爆乳网站| 国产全黄a一级毛片| 精品无码国产自产野外拍在线| 日韩二区三区| 国产产在线精品亚洲aavv| 久久国产V一级毛多内射| 国产aaaaa一级毛片| 日韩小视频在线播放| 免费观看亚洲人成网站| 日本在线欧美在线| 91精品视频网站| 国产在线日本| 狠狠色噜噜狠狠狠狠色综合久| 国产精品部在线观看| 久一在线视频| 在线无码av一区二区三区| 亚洲欧美另类专区| 精品国产一区91在线| 一区二区理伦视频| 麻豆国产在线观看一区二区| 久久久亚洲色| 日韩区欧美区| 黄片在线永久| 国产一级裸网站| 国产精品久久久久久影院| 91成人在线观看视频| 日韩视频免费| 色呦呦手机在线精品| 亚洲欧美在线看片AI| 色婷婷在线影院| 久久久久久久久久国产精品| 黄色福利在线| 久久久成年黄色视频| 国产高清在线观看| 97青青青国产在线播放| 国产成人调教在线视频|