《數(shù)據(jù)庫應(yīng)用技術(shù)-Delphi應(yīng)用系統(tǒng)開發(fā)》-蔣麗華-電子教案 第九章_第1頁
《數(shù)據(jù)庫應(yīng)用技術(shù)-Delphi應(yīng)用系統(tǒng)開發(fā)》-蔣麗華-電子教案 第九章_第2頁
《數(shù)據(jù)庫應(yīng)用技術(shù)-Delphi應(yīng)用系統(tǒng)開發(fā)》-蔣麗華-電子教案 第九章_第3頁
《數(shù)據(jù)庫應(yīng)用技術(shù)-Delphi應(yīng)用系統(tǒng)開發(fā)》-蔣麗華-電子教案 第九章_第4頁
《數(shù)據(jù)庫應(yīng)用技術(shù)-Delphi應(yīng)用系統(tǒng)開發(fā)》-蔣麗華-電子教案 第九章_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

學(xué)習(xí)Rave組件的基本功能和常用屬性、方法和事件

掌握RaveDesinger報表設(shè)計環(huán)境的組成部分和使用方法

掌握Rave組件結(jié)合報表向?qū)ч_發(fā)數(shù)據(jù)報表掌握利用RaveDesinger手工制作報表第9章

數(shù)據(jù)報表的制作在數(shù)據(jù)庫項目中,設(shè)計報表是最重要的任務(wù)之一,報表就是用來概括數(shù)據(jù)的文檔。例如,公司要制作一個月度報表來列出所有超過銷售定額的銷售人員。這樣數(shù)據(jù)的分析與統(tǒng)計結(jié)果需要以報表的形式顯示,并最終打印成文檔以供領(lǐng)導(dǎo)審批或者存檔。

Delphi為用戶設(shè)計了功能強(qiáng)大的軟件工具,它能自動生成報表。其中RaveReport5.0數(shù)據(jù)報表集成開發(fā)環(huán)境是從Delphi7才開始引入的(以前版本的Delphi的數(shù)據(jù)報表開發(fā)技術(shù)稱為QuickReport),它是一個功能強(qiáng)大的集成報表開發(fā)環(huán)境。

Delphi7中實現(xiàn)報表的方法稱為Rave,將Rave報表組件添加到應(yīng)用中后,就可以創(chuàng)建各種類型的報表。本章將討論怎樣使用Rave,介紹各個Rave報表組件及其屬性、方法和事件,最后舉例說明如何利用Rave組件設(shè)計各種樣式的報表。7/23/202429.1Rave報表組件概述

Rave報表組件位于Rave組件面板中,如圖9-1所示,共有13個組件。這些組件分別從左到右依次為:RvProject組件、RvSystem組件、RvNDRWriter組件、RvCustomConnection組件、RvDataSetConnection組件、RvTableConnection組件、RvQueryConnection組件、RvRenderPreview組件、RvRenderPrinter組件、RvRenderPDF組件、RvRenderHTML組件、RvRenderRTF組件和RvRenderText組件。Rave組件中的這13個組件可以被分為4個大類。l

Rave工程組件

Rave工程組件只包含一個RvProject組件,是應(yīng)用程序和Rave可視報表之間的接口,可以在RaveDesignet中設(shè)計各種格式的報表。通過RvProject組件可以在Delphi應(yīng)用程序中打開已經(jīng)設(shè)置好的Rave報表。7/23/20243l

引擎類組件引擎類組件包括RvSystem和RvNDRWriter組件,可以從以前定義的報表文件中讀取,也可以根據(jù)屬性描述設(shè)定報表風(fēng)格。l

Render組件

Render組件用來將一個RSR(RaveSnapshotReport)文件或者從RvNDRWriter產(chǎn)生的流轉(zhuǎn)換為各種格式,并發(fā)布出來。這類組件主要包括的有:RvRenderPreview、RvRenderPrinter、RvRenderPDF、RvRenderHTML、RvRenderRTF和RvRenderText組件。l

數(shù)據(jù)連接組件數(shù)據(jù)連接組件主要用于將應(yīng)用程序的數(shù)據(jù)和Rave報表中的DirectDataViews相連接,它主要包括的有:RvCustomConnection、RvDataSetConnection、RvTableConnection和RvQueryConnection組件。圖9-1RaveReport5.0組件7/23/20244下面重點介紹RvProject組件、RvSystem組件、RvNDRWriter組件、RvDataSetConnection組件、RvTableConnection組件、RvQueryConnection組件、RvRenderPreview組件、RvRenderPrinter組件、9.1.1RvProject組件

RvProject組件是Rave報表工具中的核心組件,是訪問Rave可視化報表的手段,只要使用Rave報表就要利用到RvProject組件。通常情況下應(yīng)用程序中只有一個RvProject組件,如果必要的話可以有多個。下面介紹RvProject組件的主要屬性和方法。

ProjectFile屬性:用于指定應(yīng)用程序保存報表定義的Rave項目文件,這種項目文件的擴(kuò)展名一般是.rav,盡管是一個文件,但是Rave項目可以保存各種報表的定義。當(dāng)調(diào)用了TraveReport的Open方法后,Rave項目文件將被裝入內(nèi)存以準(zhǔn)備顯示或打印。在關(guān)閉應(yīng)用程序之前必須關(guān)閉Rave項目文件,這可以通過調(diào)用Close方法來實現(xiàn)。若對報表的定義做了修改,可以調(diào)用Save方法保存所作的修改。7/23/20245在ObjectInspector中雙擊ProjectFile屬性或者單擊該屬性后的“”按鈕,可以打開SelectRaveProjectFile對話框,如圖9-2所示。通過該對話框可以選擇報表的工程文件。

DLLFile屬性:指明當(dāng)LoadDesigner屬性為True時要使用的DLL文件名。根據(jù)是否使用了packages包,文件可以是RavePack或者是RaveSolo動態(tài)鏈接庫。這個屬性只對RaveEUDL許可證有效。7/23/20246圖9-2SelectRaveProjectFile對話框

Engine屬性:用于指定報表的引擎,該報表引擎在通過RvProject組件打印報表的時候使用,若這個屬性沒有被定義,一個默認(rèn)的RvSystem將會被創(chuàng)建以填補(bǔ)該屬性,TRvSystem和TRvNDRWriter對象都可以賦給這個屬性。7/23/20247

StoreRAV屬性:用于指定要保存到應(yīng)用程序中的報表文件。當(dāng)通過該屬性指定RAV文件后,該文件將被編譯到應(yīng)用程序中稱為應(yīng)用程序的一部分。在ObjectInspector中雙擊StoreRAV屬性或者單擊該屬性后的“”按鈕,可以打開LoadIntoExe對話框,如圖9-3所示。

圖9-3LoadIntoExe對話框單擊“”按鈕打開對話框,選擇要裝載的RAV文件,完成后單擊“”按鈕將文件裝載到應(yīng)用程序中。單擊“”按鈕可以將當(dāng)前應(yīng)用程序中的RAV文件保存成標(biāo)準(zhǔn)的RAV文件。單擊“”按鈕可以清除RAV文件。7/23/20248

Execute方法:用于開始打印當(dāng)前選中的Rave報表。其使用方法如下。

RvProject1.Execute;Open方法:用于打開指定的報表項目文件,相當(dāng)于設(shè)置Active屬性為True。Close方法:用于關(guān)閉指定的報表項目文件,并從內(nèi)存中卸載,相當(dāng)于設(shè)置Active屬性為False。若調(diào)用了RvProject的Open方法,則在應(yīng)用程序退出前務(wù)必調(diào)用本方法。9.1.2RvSystem組件

RvSystem組件是一個功能非常強(qiáng)大的組件,集合了RvRenderPreview、RvRenderPrinter和RvNDRWriter組件的功能。RvSystem組件可以將報表發(fā)送到打印機(jī)或者預(yù)覽窗口,也可以顯示Setup和狀態(tài)屏幕。RvSystem組件的常用屬性如下。

SystemPreview屬性:用于顯示在RvRenderPreview中的所有的預(yù)覽類型選項。其中包含屬性以及含義如下。7/23/20249l

FormHwight:定義了RvSystem報表預(yù)覽窗口的高度。l

FormState:定義了報表預(yù)覽窗口的初始狀態(tài),包括正常顯示、最小化和最大化。l

FormWidth:定義了RvSystem報表預(yù)覽窗口的寬度。

RulerType屬性:指定了預(yù)覽窗口中標(biāo)尺的類型,可以選擇的類型,如表9-1所示。表9-1預(yù)覽窗口中標(biāo)尺的類型7/23/2024107/23/202411

SystemOptions屬性:用于控制RvSystem組件的配置情況,其各個屬性的取值以及含義表9-2所示。表9-1SystemOptions中各個屬性的取值以及含義表9-2SystemOptions中各個屬性的取值以及含義7/23/2024129.1.3RvNDRWriter組件

RvNDRWriter組件用于連接RvRenderPrinter和RvRenderPreview組件,以特殊的二進(jìn)制格式保存一個報表,一直到該報表準(zhǔn)備打印或者預(yù)覽時。RvNDRWriter組件的常用屬性如下。

Copies屬性:用戶指定或者返回打印到打印機(jī)時的份數(shù)。下面的代碼指定打印3份報表。RvNDRWriter.Copies:=3;

但并不是所有的打印機(jī)都支持此功能,尤其是一些非激光打印機(jī)??梢酝ㄟ^MaxCopies屬性判斷該功能是否可以使用。對于不支持該功能的打印機(jī)不得不多次進(jìn)行打印。

CurrentPage屬性:用于返回當(dāng)前頁的頁碼。

FirstPage屬性:用于返回第一頁的頁碼。

LastPage屬性:用于返回最后一頁的頁碼。

Pages屬性:用于返回報表中的總頁數(shù)。下面的代碼將顯示“第xx頁,共xx頁”的格式。7/23/202413WithRvNDRWriter1doBeginEdtPage.Text:=IntToStr(CurrentPage);PageLabel.Caption:='第'+IntToStr(CurrentPage-FirstPage+1)+'頁,共'+

IntToStr(Pages)+'頁';End;MarginBottom屬性:用于設(shè)置或返回頁邊距中的底邊距。MarginTop屬性:用于設(shè)置或返回頁邊距中的頂邊距。MarginLeft屬性:用于設(shè)置或返回頁邊距中的左邊距。MarginRight屬性:用于設(shè)置或返回頁邊距中的右邊距。下面的代碼用于設(shè)置頁面的4個邊距。7/23/202414WithRvNDRWriter1doBeginMarginBottom:=0.6;MarginTop:=0.6;MarginLeft:=0.6;MarginRight:=1.1;End;Orientation屬性:用于設(shè)置頁面是橫向還是縱向,取值為poPortrait表示縱向設(shè)置頁面,取值為poLandscape表示橫向設(shè)置頁面。

ScaleX和ScaleY屬性:分別用于設(shè)置頁面的水平縮放比例和縱向縮放比例,100表示正常尺寸,50表示縮小50%,200表示放大兩倍。下面的代碼將頁面縮小到原來的四分之一。RvNDRWriter1.ScaleX:=50;RvNDRWriter1.ScaleY:=50;7/23/2024159.1.4RvDataSetConnection組件

RvDataSetConnection組件為Rave報表提供數(shù)據(jù)源,通過屬性DataSet屬性關(guān)聯(lián)數(shù)據(jù)集。當(dāng)應(yīng)用程序使用了DataSet或者ADODataSet等組件時,可以使用RvDataSetConnection組件。RvDataSetConnection組件的常用屬性、方法和事件如下。

DataSet屬性:用于關(guān)聯(lián)數(shù)據(jù)數(shù)據(jù)集組件,為報表提供數(shù)據(jù)源。

WriteBCDData方法:用于在OnGetRow事件中寫B(tài)CD字段的內(nèi)容,字段的值應(yīng)當(dāng)和在OnGetCols事件中定義的字段順序一致,其語法定義為:FunctionWriteBCDData(FromatData:String;NativeData:Currency):String;其中FromatData參數(shù)定義了字段的格式,如果沒有格式可以設(shè)置該參數(shù)為空。NativeData參數(shù)指定了應(yīng)當(dāng)包含未被修改的字段值的內(nèi)容。

OnEOF事件:當(dāng)Rave數(shù)據(jù)系統(tǒng)希望數(shù)據(jù)為EOF狀態(tài)時

,就會觸發(fā)OnEOF事件,其語法定義為:7/23/202416ProcedureOnEOF(Connection:RvCustomConnection;varEof:Boolean);

OnFirst事件:當(dāng)Rave數(shù)據(jù)系統(tǒng)希望數(shù)據(jù)的光標(biāo)定位到數(shù)據(jù)的第一行時,就會觸發(fā)OnFirst事件,其語法定義為:ProcedureOnFirst(Connection:TRvCustomConnection);9.1.5RvQueryConnection組件

RvQueryConnection組件為Rave報表提供數(shù)據(jù)源,通過屬性Query關(guān)聯(lián)數(shù)據(jù)集。當(dāng)應(yīng)用程序中使用了Query組件時,可以使用RvQueryConnection組件。RvQueryConnection組件只有一個重要的屬性:Query屬性。Query屬性用于關(guān)聯(lián)數(shù)據(jù)集組件,為報表提供數(shù)據(jù)源。9.1.6RvTableConnection組件

RvTableConnection組件為Rave報表提供數(shù)據(jù)源,通過屬性Table關(guān)聯(lián)數(shù)據(jù)集。當(dāng)應(yīng)用程序中使用了Table組件時,可以使用RvTableConnection組件。RvTableConnection組件的常用屬性、方法和事件如下。7/23/202417

Table屬性:用于關(guān)聯(lián)數(shù)據(jù)集組件,為報表提供數(shù)據(jù)源。在代碼中指定數(shù)據(jù)源的方法為:RvTableConnection.Table:=Table1;

WriteBlobData方法:用于在OnGetRow事件中寫B(tài)LOB字段的內(nèi)容,字段的值應(yīng)當(dāng)和在OnGetCols事件中定義的字段順序一致,其語法定義為:FunctionWriteBlobData(var:Buffer;Len:Longint):String;其中Buffer指定了緩沖的指針,Len表示長度。

OnNext事件:當(dāng)Rave數(shù)據(jù)系統(tǒng)希望數(shù)據(jù)定位到下一行時,就會觸發(fā)OnNext事件,其語法定義為:ProcedureOnNext(Connection:TRvCustomConnection);

OnGetRow事件:當(dāng)Rave數(shù)據(jù)系統(tǒng)希望從當(dāng)前行中獲取數(shù)據(jù)時,就會觸發(fā)OnGetRow事件,其語法定義為:ProcedureOnGetRow

(Connection:TRvCustomConnection);7/23/2024189.1.7RvRenderPreview組件

RvRenderPreview組件用于從RvNDRWriter組件獲取文件,并把獲得的文件發(fā)送到屏幕上進(jìn)行預(yù)覽。RvRenderPreview組件提供了許多的方法和事件允許程序開發(fā)人員創(chuàng)建一個完全定制的用戶界面。以下是RvRenderPreview組件的兩個常用屬性。

MarginMethod屬性:用于返回或者設(shè)置繪制預(yù)覽頁面邊緣的方法,取值為mmFixed表示不管ZoomFactor值為多少,總是保持邊緣的尺寸不變;取值為mmScaled表示邊緣的尺寸會隨著頁面的縮放而縮放,保持相同的比例。

ZoomFactor屬性:用于設(shè)置當(dāng)前頁面的縮放比例,100.0表示正常的尺寸,200.0表示大一倍,50.0表示縮小一半。9.1.8RvRenderPrinter組件

RvRenderPrinter組件用于從RvNDRWriter組件獲取文件,并發(fā)送到打印機(jī)。RvRenderPrinter組件通常用于在預(yù)覽窗口中執(zhí)行打印操作。盡管RvRenderPrinter組件是一個簡單的組件,但是提供了許多方法和屬性定制打印。下面介紹RvRenderPrinter組件的常用屬性、方法和事件。7/23/202419

IgnoreFileSettings屬性:當(dāng)該屬性設(shè)置為True時,將忽略存儲在報表中的打印機(jī)的設(shè)置值,并使用當(dāng)前用戶的設(shè)置值。

Abort方法:用于終止當(dāng)前的打印任務(wù),并設(shè)置Aborted屬性為True。Abort方法將引起一個啞異常,并停止當(dāng)前的執(zhí)行線程。

OnPrint事件:在打印報表正文的時候被觸發(fā)。要開始一個新的頁面,可以調(diào)用NewPage方法。7/23/2024209.2通過RaveDesigner設(shè)計報表

Rave報表設(shè)計器是可視化的設(shè)計報表的工具,利用它可以快速設(shè)計出各式各樣的報表。9.2.1報表設(shè)計器概述

RaveDesigner是一個所見即所得的報表集成開發(fā)環(huán)境,通過它提供的各種報表生成向?qū)Ш蛨蟊碓O(shè)計組件可以方便地開發(fā)出滿足實際需要的各種數(shù)據(jù)報表。RaveDesigner通過報表工程(ReportProject)對報表(Report)進(jìn)行管理,一個報表工程可以包括多個報表,一個報表又可以包括多個報表頁(ReportPage)。RaveDesigner中還提供了多種可用于報表設(shè)計的組件,以及報表生成向?qū)В≧eportWizards),使得開發(fā)人員可以更加方便的生成報表。在Delphi7主界面中單擊【Tools】|【RaveDesigner】命令,或者在當(dāng)前窗體中放置一個RvProject組件,然后雙擊該組件,都可以進(jìn)入RaveDesigner的集成開發(fā)環(huán)境,主界面如圖9-4所示。7/23/202421

圖9-4RaveDesigner的主界面

7/23/202422

RaveDesigner的主界面有些像Delphi7,主要由菜單欄、工具欄、組件面板、屬性編輯器、PageDesigner(頁面設(shè)計器)、EventEditor(事件編輯器)和對象樹視圖組成。其中,左邊的屬性編輯器用于編輯當(dāng)前選中對象的屬性,PageDesigner用于設(shè)置報表的頁面,在其中可以添加、刪除和編輯組件。EventEditor用于編輯事件。最右邊的對象樹視圖中列出了當(dāng)前頁面中所有的對象。

RaveDesigner的組件面板中包含各種組件和操作命令,下面對組件面板中的幾個組件進(jìn)行簡單的介紹。l

Drawing頁:該頁中包含了各種繪圖用的組件,如圖9-5所示。圖9-5Drawing頁這些組件的使用只是為了增加頁面的顯示效果,Drawing頁中各個組

7/23/202423

這些組件的使用只是為了增加頁面的顯示效果,Drawing頁中各個組件從左到右依次為:Line繪制任意方向的線;HLine繪制水平方向的線;VLine繪制垂直方向的線;Rectangle繪制矩形;Square繪制正方形;Ellipse繪制橢圓;Circle繪制圓。l

BarCode頁:用于設(shè)置報表不同類型的條形碼,如圖9-6所示。BarCode頁中各個組件從左到右依次為:PostNetBarCode、I2of5BarCode、Code39BarCode、Code128BarCode、UPCBarCode和EANBarCode。圖9-6BarCode頁

Standard頁:該頁中包含了一些基本的報表組件,如圖9-7所示。Standard頁中各個組件從左到右依次為:Text、Memo、Section、Bitmap、MetaFile、FontMaster、PagNumInit。

7/23/202424圖9-7Standard頁l

Report頁:該頁中提供了用于報表控制,并顯示特定的數(shù)據(jù)信息的組件,如圖9-8所示。Report頁中各個組件從左到右依次為:DataText、DataMemo、CalcText、DataMirrorSection、Region、Band、DataBand、DataCycle、CalcOp、CalcTotal和CalcController。

圖9-8Report頁7/23/202425l

Zoom頁:用于放大或者縮小報表頁面,如圖9-9所示。其中可以通過下拉列表框選擇合適的縮放比例。Zoom頁中各個組件從左到右依次為:ZoomTool報表工具;ZoomIn放大;ZoomOut縮?。籞oomtoSelectedObject調(diào)整以適應(yīng)選中的對象;ZoomtoPageWidth調(diào)整以適應(yīng)頁寬;ZoomtoWholePage調(diào)整以適應(yīng)整頁。圖9-9Zoom頁7/23/2024269.2.2報表向?qū)旅嫱ㄟ^一個具體的實例演示如何利用向?qū)Э焖俚貏?chuàng)建一個簡單的報表。第1步:運(yùn)行Delphi7,新建一個應(yīng)用程序。第2步:在窗體中添加一個ADOConnection組件,Name屬性為ADOConnection1,LoginPrompt屬性為False。設(shè)置ConnectionString屬性,連接newworldhouse數(shù)據(jù)庫(參照第1章內(nèi)容)。設(shè)置Connected屬性為True。

第3步:在窗體中添加一個ADOQuery組件,Name屬性為ADOQuery1,設(shè)置Connection屬性ADOConnection1,設(shè)置Active屬性為True,執(zhí)行SQL語句返回數(shù)據(jù)集,SQL屬性為:select*fromjie_jiesanwherec_houloclike'14%',用于返回結(jié)算表中購房座落所屬14區(qū)的數(shù)據(jù)信息。7/23/202427第4步:添加一個RvDataSetConnection組件,Name屬性為RvDataSetConnection1。設(shè)置DataSet屬性為ADOQuery1,用于指定數(shù)據(jù)集。第5步:添加一個RvProject組件,Name屬性為RvProject1,雙擊RvProject1進(jìn)入到RaveDesigner。單擊【File】|【NewDataObject】命令,打開DataConnections對話框,選擇創(chuàng)建對象的類型,如圖9-10所示。

圖9-10選擇創(chuàng)建對象的類型圖9-11選擇活動的連接7/23/202428第6步:在DataConnections對話框中選擇NewDataView選項,單擊“”按鈕,打開對話框選擇活動的連接,如圖9-11所示。當(dāng)沒有添加任何連接組件時,選擇活動的連接時就沒有被選內(nèi)容。此時可以在創(chuàng)建一個NewDataView對象。第7步:選擇RvDataSetConnection(DT)選項,單擊“”按鈕,創(chuàng)建DataView對象,如圖9-12所示。第8步:在RaveDesigner集成開發(fā)環(huán)境中單擊【Tools】|【ReportWizards】|【SampleTable】命令,打開SampleTable對話框,如圖9-13所示。第9步:在SampleTable對話框中選擇創(chuàng)建的數(shù)據(jù)視圖,單擊“”

按鈕,打開界面選擇顯示字段的對話框,如圖9-14所示。第10步:選擇希望顯示的字段,單擊“”

按鈕,打開如圖9-15所示的對話框。該對話框用于調(diào)整字段出現(xiàn)的順序。7/23/202429圖9-12創(chuàng)建的DataView對象

圖9-13SampleTable對話框第11步:單擊“”

按鈕,顯示調(diào)整頁面邊距和報表標(biāo)題的對話框,如圖9-16所示。在ReportTitle中修改報表的標(biāo)題為“結(jié)算報表”。7/23/202430圖9-14選擇顯示字段

圖9-15調(diào)整字段出現(xiàn)的順序第12步:單擊“”

按鈕,打開選擇報表字體的對話框,如圖9-17所示。第13步:選擇完報表字體后,單擊“”按鈕創(chuàng)建報表。創(chuàng)建完成后在PageDesigner中調(diào)整一下字段的位置即數(shù)據(jù)欄位置,以改進(jìn)顯示效果;接著修改數(shù)據(jù)標(biāo)題的Text屬性為中文形式,如圖9-18所示,其中數(shù)據(jù)標(biāo)題用于說明數(shù)據(jù)欄中每列數(shù)據(jù)表示的含義,在第一頁的報表標(biāo)題下面,在其它頁位于報表頁眉的下面。7/23/202431

第14步:選擇【File】|【ExecuteReport】命令,打開OutputOptions對話框。OutputOptions對話框用于設(shè)置輸入?yún)?shù),設(shè)置完成后單擊“

”按鈕,即可看到報表預(yù)覽的效果,如圖9-19所示。圖9-16調(diào)整頁面邊距和報表標(biāo)題圖9-17選擇報表字體第15步:關(guān)閉預(yù)覽窗口,選擇【File】|【Save】命令,將工程文件保存在應(yīng)用程序的目錄中,命名為reportjiesan.rav。7/23/202432

圖9-18調(diào)整報表格式

7/23/202433

第16步:返回Delphi集成開發(fā)環(huán)境,在窗口添加一個Button組件,Name屬性為Button1,在OnClick事件中添加如下代碼,用于在單擊該按鈕時打開報表文件。procedureTForm1.Button1Click(Sender:TObject);begin//為報表組件的ProjectFile屬性指定一個設(shè)計好的報表文件

RvProject1.ProjectFile:=extractfilepath(application.ExeName)+'reportjiesan.rav';//然后運(yùn)行報表,可以進(jìn)行預(yù)覽或者打印報表

RvProject1.Execute;//也可以使用ExecuteReport()方法

RvProject1.Close;//關(guān)閉報表end;

第17步:運(yùn)行程序,單擊Button1按鈕可以打開OutputOptions對話框,如圖9-20所示。在該對話框中可以選擇預(yù)覽或者打印報表。7/23/202434圖9-19報表預(yù)覽的效果

圖9-20OutputOptions對話框通過上例可以看出,采用RaveReport5.0進(jìn)行報表開發(fā)十分簡單,只需要掌握報表設(shè)計過程中的幾個要點即可以設(shè)計出滿足各種實際需求的報表。注意使用RaveReport5.0報表生成向?qū)нM(jìn)行報表開發(fā)時,一般情況下都需要對報表格式進(jìn)行一定的調(diào)整以及對界面進(jìn)行美化,如上例中對Text組件和DataText組件位置進(jìn)行了調(diào)整、表頭文字及標(biāo)題文字的美化。

7/23/2024359.2.3添加計算字段手工制作報表

Delphi7中的RaveReport5.0是一個功能強(qiáng)大的報表集成開發(fā)環(huán)境,可以方便地開發(fā)出不同復(fù)雜程度的嵌套報表。下面舉一個實例設(shè)計一類比較復(fù)雜但是又比較常用的嵌套報表,并將計算字段引入到報表中表達(dá)一些統(tǒng)計信息。利用RaveReport5.0開發(fā)嵌套報表主要用到了它的Region、Band和DataBand組件及其相應(yīng)的支持機(jī)制。l

Region用于在報表頁中指定一個操作區(qū)域,一個報表頁中可以有多個Region即可分為多個區(qū)域,而且各個區(qū)域互不影響。l

Band和DataBand用于在一個Region中分出多個子區(qū)域(帶),其中Band是一般的子區(qū)域,而DataBand則可以與數(shù)據(jù)集相關(guān)聯(lián),用于方便地生成顯示數(shù)據(jù)集多條記錄的數(shù)據(jù)報表。l

在各個子區(qū)域中,可以放置不同的Text、DataText等組件以生成報表的具體內(nèi)容。7/23/202436

在SLMIS系統(tǒng)使用的數(shù)據(jù)庫newworldhouse中,數(shù)據(jù)表hou_bahouse、con_conrelation和con_items數(shù)據(jù)表分別存放著房屋基本信息、合同聯(lián)系單信息和合同明細(xì)信息,現(xiàn)在可以生成一個嵌套數(shù)據(jù)報表,它主要包括這樣三部分:指定房屋信息、指定合同聯(lián)系單信息和合計部分,開發(fā)過程如下。第1步:運(yùn)行Delphi7,新建一個工程,在窗體中放置一個ADOConnection組件,Name屬性為ADOConn,LoginPrompt屬性為False(以免每次訪問數(shù)據(jù)庫時要輸入口令和密碼),

ConnectionString屬性設(shè)置為連接到newworldhouse數(shù)據(jù)庫;放置兩個ADOQuery組件,Name屬性為ADOQry1、ADOQry2,Connection屬性都是ADOConn,ADOQry1的SQL屬性如下,它表示訪問14區(qū)房屋為可售狀態(tài)的部分字段信息。selectc_houloc,c_type,c_use,c_shape,c_saleable,f_enarea,m_pricefromhou_bahousewherei_qu=14andc_saleable='可售'7/23/202437

ADOQry2的SQL屬性如下,它表示訪問14區(qū)的房屋在2004年3月份所開合同聯(lián)系單的部分字段信息,由于在合同信息con_relation中無房屋座落信息,因此篩選條件要先從合同明細(xì)表中篩選出房屋座落為14區(qū)的合同號,并且合同號為2004年3月份的合同,最后從con_relation數(shù)據(jù)表選取部分字段信息。selectc_concode,c_people,f_area,d_jiaofangdatefromcon_relationwherec_concodein(selectc_concodefromcon_itemswherec_houloclike'14%')andc_concodelike'0403%'并且這兩個ADOQuery組件的Active屬性都設(shè)置為True。

放置兩個RvDataSetConnection組件,Name屬性分別為RvDataSetConn1、RvDataSetConn2,DataSet屬性分別為ADOQry1、ADOQry2,用于為報表指定兩個數(shù)據(jù)集。放置一個RvProject組件,Name屬性為RvProject1,其中ProjectFile屬性用于指定需要打開的報表工程文件,在程序中動態(tài)地進(jìn)行管理。7/23/202438

最后放置一個Button組件,Name屬性為Button1,Caption屬性為“嵌套報表”,用于單擊事件中運(yùn)行由RvProject1的ProjectFile屬性指定的報表工程文件。第2步:雙擊RvProject1組件進(jìn)入到RaveReport5.0報表集成開發(fā)環(huán)境,為報表創(chuàng)建兩個DirectDataView類型的數(shù)據(jù)視圖,名稱分別為DataView1和DataView1,對應(yīng)的數(shù)據(jù)集分別為RvDataSetConn1和RvDataSetConn2,用于為報表提供兩個不同的數(shù)據(jù)源。第3步:在RaveReport5.0集成開發(fā)環(huán)境中往報表頁(ReportPage)中分別放置以下組件完成嵌套報表的開發(fā),其界面布局如圖9-21所示。第4步:放置一個Region組件(位于【Report】組件面板),Name屬性為Region1,調(diào)整它的位置和大小,使其布滿報表頁并且留有合適的頁邊距。第5步:設(shè)計表頭:在Region1上面放置一個Band組件(位于【Report】組件面板),Name屬性為Band1,然后在Band1上面放置一個Text組件(位于【Standard】組件面板),

它的Text屬性為“嵌套報表設(shè)計”,調(diào)整它的位置和字體,使得界面美觀。7/23/202439圖9-21界面布局7/23/202440

第6步:設(shè)計指定房屋基本信息報表:在Band1中依次放置九個Text組件,它們的Text屬性分別為:“房屋基本信息”、“購房座落”、“房型”、“用途”、“戶型”、“銷售狀態(tài)”、“建筑面積”、“單價”。同時調(diào)整它們的位置和字體。在Region1上面放置一個DataBand組件,Name屬性為DataBand1,DataView屬性為DataView1。完成上面的操作后,再在DataBand1依次放置八個DataText組件,它們的DataView屬性都是DataView1,DataField屬性依次為:c_houloc、c_type、c_use、c_shape、c_saleable、f_enarea、m_price,同時調(diào)整它們的位置和字體。第7步:設(shè)計合同聯(lián)系單報表:首先在Region1上面放置一個Band組件,Name屬性為Band2,然后在Band2中放置五個Text組件,它們的Text屬性分別為:“合同聯(lián)系單信息”、“合同號”、“個人/法人”、“合同建筑面積”、“交房時間”。在Region1上面放置一個DataBand組件,Name屬性為DataBand2,DataView屬性為DataView2。并且在DataBand2上面放置四個DataText組件,它們的DataView屬性都是DataView2,DataField屬性依次為:c_concode、c_people、f_area、d_jiaofangdate,同時調(diào)整它們的位置和字體。

7/23/202441第8步:設(shè)計報表合計部分:在Region1中放置一個Band組件,Name屬性為Band3,然后在Band3上面放置相關(guān)的Text組件并將其Text屬性賦值為有關(guān)的提示信息。放置兩個CalcText組件,分別用于統(tǒng)計滿足條件的房屋座落和合同聯(lián)系單信息數(shù),它們的Controller屬性分別為DataBand1和DataBand2,DataView屬性與它們的Controller的DataView屬性相對應(yīng),分別為DataV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論