Rave 報表入門
Rave 報表入門
Delphi 7.0 中實現報表的方法稱為 Rave。Rave報表是一種基于組件的可視化
報表設計工具,使用它可以簡化設計過程,提高設計效率。只要將 Rave 報表組件添
加到應用程序中后,就可以創(chuàng)建各種類型的報表。本文將以 ADO 組件連接數據庫,
向讀者介紹怎樣利用 Rave Report5.0 快速設計報表。
還是趕快行動起來,體驗一下 Rave Reports 的強大功能吧!
1.準備好范例數據庫,筆者使用 Access建立數據庫Student.mdb,創(chuàng)建一個表:
StuInf(學生基本信息),包含Sno(學號),Sname(姓名),Sex(性別),Class(班級),
Birthday(出生日期)... 等字段,所有字段名先使用括號中的中文;再寫入幾條數據
備用。
2.啟動 Delphi7.0 建立一個工程,在窗體上放置一個 ADOQuery控件,設置其
ConnectionString 屬性,連接數據庫 Student,設置 SQL 屬性為“select * from
StuInf;”,Active 屬性為 True 。為了能看到庫中的數據,再往窗體上放置一個
DBGrid 和一個 DataSource ,設置相關屬性,使 DBGrid 中顯示數據。
3.在窗體上添加一個 GroupBox,設置其 Caption為“選擇報表式樣”;往其中
添加兩個 RadioButton ,Caption 分別為“條列形式”、“表格形式”;往窗體上
添加一個按鈕,Caption 為“顯示報表”。
現在,準備工作已經完成了,保存工程,下面開始報表的設計。
4.在窗體上添加一個RvDataSetConnection組件,設置其DataSet為ADOQuery1,
這樣,就提供了 Rave 報表與數據源之間的連接。
5.在 Delphi 主菜單的 Tools 中選擇 RaveDesigner 啟動 RaveReports5.0。
我們可以看到,報表設計器的界面與Delphi非常像,左上角是各種工具欄按鈕,
右上方是組件面板,左側是屬性窗,右側是項目管理窗,中間則是可視化的設計窗。
利用它設計報表完全是可視化的,通常在它的組件面板上直接將報表界面組件托放到
中間的設計窗上,能在左側的屬性窗口中設置這些界面組件的屬性,從而改變它的外
觀,設置完后還可以打印御覽。
我們在系統(tǒng)自動生成的報表頁上放置一個TextComponent(在Standard面板上),
可以隨意拖動,改變它的位置。右鍵單擊它,彈出菜單,點擊cut,copy,delete 等
按鈕,好像都不起作用!在右側項目管理窗中右鍵單擊控件的名字,竟然不會彈出菜
單!這一點與 Delphi 相比可是太不方便了!我們必須使用鍵盤快捷鍵才能實現上述
操作。
在利用報表設計器創(chuàng)建報表的時候,首先需要創(chuàng)建數據視圖,然后基于所創(chuàng)建的
數據視圖設計報表,下面就來創(chuàng)建數據視圖。
6.選擇[File/New Data Object]菜單項,在系統(tǒng)彈出的對話框中選擇Direct
Data View ,點擊 Next,然后選中 RvDataSetConnection1(DT),點擊Finish。
是不是這樣就搞定了呢?誰知系統(tǒng)彈出錯誤消息框,“ A componentnamed
DataView1 alreadly exists.” 明明沒有創(chuàng)建 DataView1,為什么說 DataView1
已經存在呢?筆者經過幾次試驗,終于找到了問題之所在。還記得我們使用的數據表
嗎?所有字段都是中文的,請試者將剛剛創(chuàng)建失敗的 DataView1的 Name 屬性改成
隨意的漢字,又將得到錯誤消息框,”name” is not a valid component name.
看來,在由 Rave Reports創(chuàng)建的視圖和其所有字段名中使用漢字是不合法的。因此
系統(tǒng)在創(chuàng)建視圖遇到不合法字段時,自動將其名稱定為DataView1,當數據表中有多
個字段時,名稱都是 DataView1,當然會提示它已經存在了。
好了,刪除已經創(chuàng)建的 DataView1,把 StuInf表中所有的字段都改成英文的,
重復第6步,一切搞定!在項目管理窗中點擊 DataView1左側的”+”,將會看到所有的
字段,只是在原字段名前都加上了“DataView1”,即DataView1Sno,DataView1Sname
等等,當然,你還可以修改它們的 Name 屬性。
數據視圖已經創(chuàng)建成功,下面開始報表界面的設計。先來設計行式顯示的報表。
7.新建一個報表頁,選擇 Zoom面板,點最右邊的一個按鈕以看到整個報表頁,
這樣有利于設計。
8.在頁面的上方放置一個 Text 組件,點其 Font 屬性,設置字體樣式,再將其
Text 屬性置為 ”學生基本信息”,作為表頭。
9.選 Report 面板,放一個 Region 組件到報表頁上,調整其大小和位置。
10.在 Region 上放一個 Band 組件,在 Band 上放一個 Text組件,設置其
Text 屬性為“學號”。再放置幾個 Text,設置它們的 Text 屬性分別為其他幾個字
段的中文名稱,適當調整它們的位置,不要超出 Band1 的白色區(qū)域。
11.在 Report 面板上選 DataBand 放到 Region 上,設置其DataView 屬性
為 DataView1。
12.在 DataBand 上放一個 DataText 組件,設置其 DataView屬性為
DataView1,DataField 屬性為 Sno;再往 DataBand 上放幾個 DataText 組件,
設置它們 DataView 屬性為 DataView1,DataField 屬性分別為剩下的幾個字段。
調整它們的位置,不要超出 DataBand1 的白色區(qū)域。
點工具欄按鈕上的 Execute Report,看看剛剛設計出的報表怎么樣吧!如果不
滿意,繼續(xù)調整各個控件的位置和字體,直到滿意為止,保存文件,命名為 Rave1.
我們再來設計表格形式的報表,這次就簡單的多了!
13.重復7,8,9,6,11步驟,選擇 Drawing面板,這里的組件是專門用來繪
制各種圖形的。調整 DataBand 的大小,選擇合適的組件,在 DataBand 上繪制你
想要的圖形,調整它們的布局,與 10,12 步一樣的道理,添加各種組件并設置其
相關屬性,御覽報表,直到滿意時保存文件,命名為 Rave2.
接下來,我們往主程序中添加代碼。
在窗體上添加一個 RvProject 組件,在 Button1 的 On Click事件中加入
以下代碼:
procedure TForm1.Button1Click(Sender:TObject);
begin
Try
if RadioButton1.Checked then
begin
RvProject1.Close;
RvProject1.ProjectFile:=’Rave1.rav’;
RvProject1.Open;
RvProject1.Execute;
end
else if RadioButton2.Checked then
begin
RvProject1.Close;
RvProject1.ProjectFile:=’Rave2.rav’;
RvProject1.Open;
RvProject1.Execute;
end
else
ShowMessage(’請選擇報表式樣 !’);
Except
Exit;
End;
end;
在 Form1 的 OnCloseQuery 事件中添加代碼:RvProject1.Close;調用
RvProject 的 Open 方法后,必須調用 Close 方法關閉報表項目文件,并從內存
中卸載。
好了,保存工程,運行程序看看效果如何吧,是不是很酷呀?看來,制作報表也不是什么困難的事。到這兒,相信讀者在報表制作上已經入門了,其實 RaveReports 5.0 的功能遠不止這些,利用它,可以實現許多功能,比如帶字回繞,圖形化,精確頁面位置控制等等,掌握它,可以制作出漂亮,復雜,高度個性化的報表,這些就留給讀者自己探索吧。
注意事項:
1.數據表要使用英文字段;
2.Text 和 DataText 不能自動換行,若數據太長,使用 Memo 和DataMemo
組件。