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

        ?

        在VB中集成水晶報(bào)表的RDC方法

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

        隗燕琳 陳敬超 陳進(jìn)明 李貴乙 張華峰

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

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

        中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼: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ù)庫(kù)軟件的編寫(xiě),要求軟件開(kāi)發(fā)者不僅具有較高的數(shù)據(jù)庫(kù)報(bào)表和查詢(xún)功能的設(shè)計(jì)能力,而且要具有較高的軟件操作界面的設(shè)計(jì)能力。使用任何流行的Windows開(kāi)發(fā)工具開(kāi)發(fā)自定義應(yīng)用程序時(shí),若用自己的方法通過(guò)逐條訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)記錄來(lái)開(kāi)發(fā)報(bào)表功能,那些復(fù)雜的數(shù)據(jù)格式、字體管理、圖形顯示,以及其他和Windows相關(guān)的顯示問(wèn)題將變得非常重要,這是一個(gè)編程挑戰(zhàn)。而報(bào)表開(kāi)發(fā)軟件又不具有實(shí)用的界面開(kāi)發(fā)功能。這就要求開(kāi)發(fā)者需將各具特點(diǎn)的軟件集成,進(jìn)行混合編程,才能研發(fā)出靈活、高效、實(shí)用的數(shù)據(jù)庫(kù)軟件系統(tǒng)。

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

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

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

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

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

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

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

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

        第一步:在CrystalReport9中建立報(bào)表模板

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

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

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

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

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

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

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

        在VB“工程”菜單中點(diǎn)擊“引用”,勾選“Microsoft ActionX Data Objects 2.5 Library”和“Crystal Reports 9 ActiveX Designer Run Time Library”兩項(xiàng)庫(kù)文件。

        第三步:在VB中集成CrystalReport9

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

        Private objCRAppAs New CRAXDRT.Application

        Private objCRReportAs New CRAXDRT.Report

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

        Dim rstAs New ADODB.Recordset

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

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

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

        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)=”職稱(chēng)”&i

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

        .Update

        Next

        End With

        該操作可以替換成任意的過(guò)程,最終目的就是處理成一個(gè)記錄集,作為報(bào)表的數(shù)據(jù)來(lái)源。

        現(xiàn)在添加報(bào)表模板,加載報(bào)表字段定義文件,并執(zhí)行Report對(duì)象的DiscardSavedData方法清除其保持的數(shù)據(jù),將屬性值變成設(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

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

        objCRReport.EnableParameterPrompting=False

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

        objCRReport.ParameterFields(2).ClearCurrentValueAndRange

        Call objCRReport.ParameterFields(1).AddCurrentValue

        ("報(bào)表測(cè)試")

        Call objCRReport.ParameterFields(2).AddCurrentValue

        ("2014-12-10")

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

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

        objCRReport.Database.SetDataSourcerst

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

        是否顯示右上角水晶報(bào)表的圖標(biāo):CRViewer1.EnableAnimationCtrl

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

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

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

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

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

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

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

        是否顯示工具欄:CRViewer1.EnableToolbar

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

        報(bào)表顯示的樣式:CRViewer1.DisplayBackgroundEdge

        報(bào)表控件是否有邊框:CRViewer1.DisplayBorder

        是否顯示報(bào)表的選項(xiàng)卡:CRViewer1.DisplayTabs

        最后指定報(bào)表來(lái)源,進(jìn)行報(bào)表顯示設(shè)置,并釋放數(shù)據(jù)集變量。

        CRViewer91.ReportSource=objCRReport

        CRViewer91.ViewReport

        Set rst=Nothing

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

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

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

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

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

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

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

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

        3 結(jié)論(Conclusion)

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

        參考文獻(xiàn)(References)

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

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

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

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

        作者簡(jiǎn)介:

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

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

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

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

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

        猜你喜歡
        數(shù)據(jù)庫(kù)設(shè)計(jì)
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        瞞天過(guò)海——仿生設(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        數(shù)據(jù)庫(kù)
        有種設(shè)計(jì)叫而專(zhuān)
        Coco薇(2017年5期)2017-06-05 08:53:16
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        精品国产性色无码av网站 | 三叶草欧洲码在线| 日本在线看片免费人成视频1000| 熟妇人妻av中文字幕老熟妇 | 久久国产精彩视频| 欧美疯狂做受xxxx高潮小说| 初尝黑人嗷嗷叫中文字幕| 91免费播放日韩一区二天天综合福利电影 | 9lporm自拍视频区| 亚洲欧美日韩精品高清| 精品国产AⅤ无码一区二区| 人妻被猛烈进入中文字幕| 国产一区二区内射最近人| 亚洲精品在线观看自拍| 日韩av一区二区三区精品久久 | 国产一区二区三区久久悠悠色av| 妺妺窝人体色www婷婷| 99久久久国产精品免费蜜臀| 人妻忍着娇喘被中进中出视频| 国产精品video| 2020国产精品久久久久| av福利资源在线观看| 熟女免费观看一区二区 | 亚洲中文字幕诱惑第一页| 精品人妻少妇丰满久久久免 | 国产人妻人伦精品1国产| 一本一道久久综合狠狠老| 狠干狠爱无码区| 91亚洲最新国语中文字幕| 国产在线一区二区三区香蕉| 又大又长粗又爽又黄少妇视频| 午夜成人鲁丝片午夜精品| 亚洲乱码一区二区三区成人小说| 中文无码制服丝袜人妻AV| 白色白色白色在线观看视频| 亚洲成人福利在线视频| 久人人爽人人爽人人片av| 欧美人和黑人牲交网站上线| 亚洲春色AV无码专区在线播放| 亚洲精品国产av成人网| 日韩三级一区二区三区|