原創(chuàng)|其它|編輯:郝浩|2012-08-31 15:39:49.000|閱讀 598 次
概述:學(xué)習(xí)報(bào)表設(shè)計(jì)前應(yīng)當(dāng)首先弄清楚VBMS系統(tǒng)與FastReport報(bào)表設(shè)計(jì)之間的關(guān)系。報(bào)表設(shè)計(jì)的目的是將VBMS數(shù)據(jù)庫(Firebird1.5)中的數(shù)據(jù)按照需要的視圖方式顯示、統(tǒng)計(jì)出來,并且可以打印、導(dǎo)出。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在VBMS中使用FastReport設(shè)計(jì)報(bào)表應(yīng)該掌握以下知識(shí):
1、 熟悉SQL語言,為設(shè)計(jì)報(bào)表準(zhǔn)備數(shù)據(jù)源。
2、 掌握VBMS的數(shù)據(jù)結(jié)構(gòu),可參考相關(guān)資料。
3、 掌握FastReport報(bào)表的設(shè)計(jì)使用方法。
體系結(jié)構(gòu)
學(xué)習(xí)報(bào)表設(shè)計(jì)前應(yīng)當(dāng)首先弄清楚VBMS系統(tǒng)與FastReport報(bào)表設(shè)計(jì)之間的關(guān)系。報(bào)表設(shè)計(jì)的目的是將VBMS數(shù)據(jù)庫(Firebird1.5)中的數(shù)據(jù)按照需要的視圖方式顯示、統(tǒng)計(jì)出來,并且可以打印、導(dǎo)出。
VBMS數(shù)據(jù)庫與VBMS管理系統(tǒng)以及FastReport報(bào)表設(shè)計(jì)之間的關(guān)系是:
Firebird數(shù)據(jù)庫系統(tǒng)是報(bào)表的數(shù)據(jù)源,它存儲(chǔ)著客戶的業(yè)務(wù)數(shù)據(jù)。但該數(shù)據(jù)的存儲(chǔ)方式并不一定是客戶希望直接看到的。
VBMS管理系統(tǒng)是中間層,它負(fù)責(zé)連接Firebird數(shù)據(jù)庫和FastReport報(bào)表系統(tǒng),將數(shù)據(jù)庫信息(例如數(shù)據(jù)庫的位置)傳入到報(bào)表系統(tǒng)中供設(shè)計(jì)報(bào)表時(shí)使用。
FastReport報(bào)表系統(tǒng)是報(bào)表設(shè)計(jì)的主體,它負(fù)責(zé)接收或創(chuàng)建數(shù)據(jù)源,通過設(shè)計(jì)報(bào)表完成需要的功能。因此在VBMS管理系統(tǒng)的打印模塊中存在兩種數(shù)據(jù)源:一種是VBMS系統(tǒng)數(shù)據(jù)源,即在各模塊中將設(shè)計(jì)好的數(shù)據(jù)源傳入到打印模塊中。優(yōu)點(diǎn)是無須用戶干預(yù)使用方便,缺點(diǎn)是不夠靈活,更改數(shù)據(jù)源需要升級(jí)程序。例如各類單據(jù)的打印報(bào)表采用的就是系統(tǒng)數(shù)據(jù)源。另一種是自行設(shè)計(jì)數(shù)據(jù)源,功能強(qiáng)大但對(duì)用戶的要求較高。例如報(bào)表中心中的各類報(bào)表。
設(shè)計(jì)步驟
完成一張報(bào)表的設(shè)計(jì)主要包括以下幾個(gè)步驟:
1、確定報(bào)表的需求,查閱VBMS關(guān)于數(shù)據(jù)庫結(jié)構(gòu)的文檔,確認(rèn)該需求的所有內(nèi)容在VBMS中均有數(shù)據(jù)字段記錄(即VBMS必須記錄了相關(guān)數(shù)據(jù),否則報(bào)表設(shè)計(jì)無從談起)。
2、根據(jù)報(bào)表的需求,確定報(bào)表應(yīng)該顯示的模式。例如:是簡單報(bào)表、主從報(bào)表或是分組報(bào)表等等。因?yàn)檫@涉及的自定義數(shù)據(jù)源時(shí)SQL語言的構(gòu)成方式。
3、利用數(shù)據(jù)庫工具(例如:IBExpert),使用SQL語言嘗試獲取報(bào)表希望的數(shù)據(jù)集。這里有可能不能通過SQL語言一步到位獲取到希望的結(jié)果,但你仍可能通過FastReport報(bào)表系統(tǒng)對(duì)數(shù)據(jù)集進(jìn)行二次加工。
4、在FastReport報(bào)表中自定義數(shù)據(jù)源(通過上步獲取的SQL語句),利用報(bào)表系統(tǒng)中提供的各種控件構(gòu)造出希望的報(bào)表格式。
5、 對(duì)于設(shè)計(jì)好的報(bào)表進(jìn)行測(cè)試。
基本概念及操作
基本概念
最主要的概念是FastReport報(bào)表的組成方式和控件主要用途,它一般包括以下方面:
*頁面(Page) --- 默認(rèn)為Page1
與我們現(xiàn)實(shí)中使用的紙張相似。但它不僅僅指的是一張紙,而是用于我們?cè)O(shè)計(jì)報(bào)表的容器。打印出來可以是一張紙也可以是多張。頁面(Page)可以有多個(gè)(你可以新增頁面New Page),即可以有多個(gè)報(bào)表容器。利用這一點(diǎn),你可以設(shè)計(jì)出復(fù)合報(bào)表(Composite Report)。
利用頁面設(shè)置可以定義大小、方向、邊界、打印方式、分欄等參數(shù)。這里不再詳述,只特別強(qiáng)調(diào)分欄的作用。你可以將頁面分成多欄,這樣打印時(shí)數(shù)據(jù)將按照從上到下,再從左往右的方式顯示。這就是我們通常說的分欄報(bào)表(Splite Report)。
*區(qū)域(Band)
FastReport將整個(gè)頁面劃分成若干個(gè)區(qū)域。而每個(gè)區(qū)域有著各自不同的功能,這些功能由FastReport自動(dòng)加載。一個(gè)頁面中可以沒有區(qū)域,也可以只有其中的某些區(qū)域,這根據(jù)報(bào)表的需求而定。放置在頁面中的區(qū)域有范圍,落入?yún)^(qū)域范圍內(nèi)的控件(例如:TextObject)才具有區(qū)域的功能。
重要的區(qū)域包括:
#報(bào)表抬頭(ReportTitle)
僅在第一頁顯示在紙張的上部。一般用于打印報(bào)表的標(biāo)題等信息。
#報(bào)表合計(jì)(ReprotSummary)
僅顯示在所有數(shù)據(jù)的最后末尾。一般用于打印統(tǒng)計(jì)信息等。
#頁首(PageHeader)
顯示在每頁的最上部。通過設(shè)置你可以讓它置于報(bào)表抬頭之上或者之下。一般用于打印頁眉信息等。
#頁腳(PageFooter)
顯示在每頁的最底部。一般用于打印頁序等信息。
#主數(shù)據(jù)(MasterData)
用于顯示數(shù)據(jù)源的數(shù)據(jù),是最重要的區(qū)域。在該區(qū)域中可以定義連接哪一個(gè)數(shù)據(jù)源,那么該數(shù)據(jù)源的數(shù)據(jù)將會(huì)按順序依次將記錄打印出。
數(shù)據(jù)區(qū)域還有明細(xì)數(shù)據(jù)(DetailData)等,一共支持6階數(shù)據(jù)。利用明細(xì)數(shù)據(jù)可以設(shè)計(jì)出主從報(bào)表、主-細(xì)-子細(xì)報(bào)表等。例如:各類單據(jù)的打印報(bào)表就是由單據(jù)頭(主數(shù)據(jù))和單據(jù)體(明細(xì)數(shù)據(jù))共同完成的。
在打印時(shí),明細(xì)一級(jí)的數(shù)據(jù)是受上一級(jí)主數(shù)據(jù)的控制,因此需要進(jìn)行相關(guān)設(shè)置。
#頭(Header)
顯示在所有數(shù)據(jù)源的最上部,僅打印一次。一般用于顯示相關(guān)摘要信息。
#尾(Footer)
顯示在所有數(shù)據(jù)源的最下部,僅打印一次。一般用于顯示所有數(shù)據(jù)的合計(jì)信息。
#欄首(ColumnHeader)
顯示在每頁數(shù)據(jù)源的上部,它在每頁均顯示。因此一般用于打印數(shù)據(jù)源字段的欄目信息。
#欄尾(ColumnHeader)
顯示在每頁數(shù)據(jù)源的下部,它在每頁均顯示。一般可用于統(tǒng)計(jì)顯示每頁數(shù)據(jù)的頁合計(jì)信息。
#群組首(GroupHeader)
用于顯示分組數(shù)據(jù),在每一個(gè)分組開始顯示。一般可用于顯示分組索引數(shù)據(jù)。例如:將商品檔案按商品分類分組顯示,在群組首你可以顯示商品分類名稱。利用群組首可以設(shè)計(jì)出分組報(bào)表,關(guān)鍵是數(shù)據(jù)源必須按分組索引的字段排序才能達(dá)到分組的效果。群組首可以有多個(gè),即可以嵌套使用。
另外,可以設(shè)置讓分組索引數(shù)據(jù)在報(bào)表預(yù)覽時(shí)顯示在左側(cè)的樹型列表框(OutLine)中。
#群組尾(GroupFooter)
與群組首一一對(duì)應(yīng)。一般用于顯示分組數(shù)據(jù)的統(tǒng)計(jì)信息。
#子(Child)
是一個(gè)獨(dú)立的區(qū)域。你可以設(shè)置子區(qū)域隸屬于上述區(qū)域中的任何一個(gè)。在打印時(shí),打印完父區(qū)域后,子區(qū)域?qū)?huì)跟隨打印。一般可用于打印裝飾線、調(diào)整高度或者打印子報(bào)表(SubReport)。
#重疊(overlay)
該區(qū)域內(nèi)包含的內(nèi)容將從頁的開始位置計(jì)算打印,而不受其他功能區(qū)域的影響。一般用于無法在其他功能區(qū)域打印的內(nèi)容的顯示。
*對(duì)話框(DialogPage)
你可以通過設(shè)計(jì)對(duì)話框完成對(duì)數(shù)據(jù)源進(jìn)行動(dòng)態(tài)控制的目的,這也是設(shè)計(jì)復(fù)雜報(bào)表的重要手段。
對(duì)話框主要通過各種輸入數(shù)據(jù)控件來接受客戶的查詢請(qǐng)求,因此可以學(xué)習(xí)幾種主要的控件。
#標(biāo)簽(Label Control) --- 用于顯示文字信息。使用Caption屬性修改文字信息。
#文本編輯框(Edit Control) --- 用于接收用戶錄入的文字信息。使用Text屬性修改文字信息。
#按鈕(Button Control) --- 一般用于確定和取消。使用Caption屬性修改文字信息。
#多選框(CheckBox Control) --- 用于用戶對(duì)條件的選擇。使用Checked屬性確定是否。
#單選框(RadioButton Control) --- 用于用戶對(duì)條件的單一選擇。使用Checked屬性確定是否。
#下拉框(ComboBox Control) --- 用于用戶對(duì)多個(gè)數(shù)據(jù)列表的選擇。使用Text屬性修改當(dāng)前文字信息,使用Items屬性填充列表信息。
#時(shí)間框(DateEdit Control) --- 用于用戶對(duì)時(shí)間的選擇。利用Date屬性改變時(shí)間。
*文本對(duì)象(Text Object)
這是FastReport報(bào)表中使用最頻繁的控件。可用它完成如下主要功能:
1. 顯示一般文字信息 --- 直接錄入即可。
2. 顯示數(shù)據(jù)字段信息 --- 一般格式:[數(shù)據(jù)源."字段名稱"]。
3. 顯示變量內(nèi)容 --- 一般格式:[<變量名>]。
4. 顯示裝飾線等。
文本對(duì)象可以進(jìn)行文字對(duì)齊、格式轉(zhuǎn)化、文本著色、字體改變、畫邊框線等許多功能,這與MicrosoftWord中的操作有諸多相同特征。因此這里不再一一贅述。
《在文本對(duì)象中引用數(shù)據(jù)字段或者變量需要用中括號(hào)包含,而且引用變量名時(shí)還需要用尖括號(hào)包含,這樣系統(tǒng)就知道這是一個(gè)變量名稱而不是其他什么。》
*子報(bào)表(Subreport Object)
放置子報(bào)表后,系統(tǒng)會(huì)自動(dòng)增加一個(gè)頁面,你可以在此頁面上設(shè)計(jì)需要的報(bào)表。系統(tǒng)在打印處理時(shí),先按主報(bào)表打印,當(dāng)碰到子報(bào)表時(shí)會(huì)自動(dòng)轉(zhuǎn)入子報(bào)表的頁面進(jìn)行打印處理,完成后繼續(xù)執(zhí)行主報(bào)表打印的工作,所以我們又稱之為嵌套報(bào)表。
設(shè)計(jì)子報(bào)表與主報(bào)表基本上相同,唯一的區(qū)別是有些功能區(qū)域不能在子報(bào)表中實(shí)現(xiàn),例如:報(bào)表抬頭、群組。
*交叉報(bào)表(DB cross-tab)
又稱動(dòng)態(tài)報(bào)表,即可以實(shí)現(xiàn)橫向和縱向都不能確定時(shí)的報(bào)表。該報(bào)表的實(shí)現(xiàn)需要數(shù)據(jù)源按一定規(guī)格組織數(shù)據(jù)方能實(shí)現(xiàn)。
*數(shù)據(jù)感知控件(FIB Query)
利用該控件進(jìn)行數(shù)據(jù)源的設(shè)計(jì),可以完成設(shè)計(jì)SQL語句、測(cè)試結(jié)果、字段別名等工作。
《在FIBQuery控件的SQL屬性對(duì)話框中有一個(gè)QueryBuilder工具。利用該工具你可以查看到目前數(shù)據(jù)庫中所有的數(shù)據(jù)表以及數(shù)據(jù)字段信息。并且可以在工具中利用向?qū)Чδ?Model)可以更好的完成SQL語句的編制工作,并可以測(cè)試結(jié)果(Result)。不過這里列出的僅是數(shù)據(jù)表(Table),還有視圖(View)沒有列出。如果需要使用視圖或存儲(chǔ)過程(Procedure)可以查閱相關(guān)資料,F(xiàn)IBQuery同樣支持視圖和過程。
在FieldAlias屬性中,你還可以將所有數(shù)據(jù)字段名稱修改成中文名稱。
在Master屬性中,你可以定義本數(shù)據(jù)源隸屬于另外哪一個(gè)數(shù)據(jù)源(即受哪一個(gè)數(shù)據(jù)源控制)。
如果你在數(shù)據(jù)源的SQL語句中定義了變量,那么在Params屬性中,你可以設(shè)置這些變量的類型和值。》
FastReport報(bào)表系統(tǒng)中還包含了一些其他控件,這些控件大部分是用于裝飾報(bào)表的,比較容易理解,使用起來也比較簡單,這里也不再說明了。
基本操作
FastReport中的操作與MicrosoftWord中的操作非常相似,不再詳述。下面僅對(duì)一些常用功能及操作技巧進(jìn)行提示。
*熱鍵
Arrow --- 在Object之間移動(dòng)
Del --- 刪除一個(gè)Object
Enter --- 調(diào)出選擇的Object的編輯器
Shift+Arrow --- 改變Object的尺寸大小
Ctrl+Arrow --- 移動(dòng)Object的位置
Alt+Arrow --- 移動(dòng)選擇的Object到相鄰的Object的旁邊并且對(duì)齊
*鼠標(biāo)
Left button --- 選擇、移動(dòng)一個(gè)Object,對(duì)于多選的一組Object,可以拖動(dòng)右下角的紅點(diǎn)同時(shí)改變所選的Object的尺寸大小
Right button --- 調(diào)出右鍵菜單
Shift+left button --- 多選Object
Ctrl+left button --- 按住Ctrl鍵不放用鼠標(biāo)左鍵可以拖出一個(gè)虛線矩形框,釋放鼠標(biāo)按鈕可以將該矩形框內(nèi)所有Object選中,然后使用left button將選中的Object移動(dòng)到所需位置
Alt+left button --- 如果針對(duì)Text Object使用,將可以直接編輯內(nèi)容,無需彈出編輯窗
汽車業(yè)務(wù)管理系統(tǒng)(VBMS)使用FastReport設(shè)計(jì)報(bào)表(二)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載