轉(zhuǎn)帖|其它|編輯:郝浩|2010-10-26 15:07:20.000|閱讀 2529 次
概述:本文主要介紹FastReport.NET報(bào)表的打印示例,希望對大家有幫助。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
一、頁面設(shè)置
情景:FastReport設(shè)計(jì)器頁面默認(rèn)設(shè)置為A4紙,但如果需要顯示的字段過多,這時(shí)就出現(xiàn)了頁面的大小無法滿足完整顯示所需內(nèi)容的問題。
解決:出現(xiàn)這個(gè)問題后,我們可以在來到"文件"—"頁面設(shè)置"選項(xiàng)中進(jìn)行設(shè)置,在這里可以直接調(diào)整頁面的紙張類型和尺寸,但是我使用的時(shí)候更多的會(huì)調(diào)整Portrait為Landscape,所謂Portrait按詞霸的翻譯就是“紙短的一邊在頂端和底端的打印方式”,而Landscape則恰恰相反,意思是“紙長的一邊在頂端和底端的打印方式”,可以簡單的理解Portrait為縱向,Landscape為橫向,通過這樣的調(diào)整既可以保證用標(biāo)準(zhǔn)的A4紙打印,又滿足了設(shè)計(jì)時(shí)能夠擴(kuò)充紙張大小,保證顯示內(nèi)容的目的。
二、過濾或排序顯示數(shù)據(jù)
情景:為了將數(shù)據(jù)按順序顯示,便于查看。
解決:此時(shí)可以雙擊數(shù)據(jù)區(qū),這時(shí)就會(huì)看到排序和過濾的選項(xiàng),可以通過點(diǎn)擊后面fx圖標(biāo),使用設(shè)計(jì)器的方式實(shí)現(xiàn),當(dāng)然也可以手動(dòng)添加代碼:
三、添加和設(shè)置子報(bào)表
情景:顯示復(fù)雜關(guān)系的數(shù)據(jù)。
解決:進(jìn)入"報(bào)表"--"設(shè)置報(bào)表欄",可以對報(bào)表進(jìn)行各種設(shè)置,其中數(shù)據(jù)首只會(huì)打印一次,數(shù)據(jù)尾則會(huì)在所有數(shù)據(jù)之后被打印。
四、日期顯示
情景:有些數(shù)據(jù)表里的日期字段是空的,這時(shí)FastReport會(huì)自動(dòng)將其轉(zhuǎn)化為0001/1/1的形式。
解決:此時(shí)如果想要讓日期為空時(shí)不顯示此默認(rèn)的形式,可以再次進(jìn)入"報(bào)表"--"選項(xiàng)"中,在"一般"選項(xiàng)卡中取消勾選"轉(zhuǎn)換空值"即可。
五、數(shù)據(jù)表的嵌套
情景:復(fù)雜的數(shù)據(jù)庫表之間有很多復(fù)雜的主從對應(yīng)關(guān)系,這時(shí)需要在數(shù)據(jù)源中建立關(guān)系。
解決:選擇動(dòng)作--新建關(guān)系,然后就可以象在數(shù)據(jù)庫里一樣建立主外鍵關(guān)聯(lián)了。
六、手動(dòng)確定數(shù)據(jù)源
情景:有些時(shí)候SQL語句建立表的關(guān)系過于復(fù)雜,以至于很難建立良好的主從關(guān)系,比如我遇到的這樣的SQL查詢
SELECT i.SheetKeyId,i.SheetId,i.OperatorName,
i.InCheckDateTime,i.OutCheckDateTime,i.OutCheckPeople,
s1.BranchName AS InBranchName,s2.BranchName AS OutBranchName
FROM dbo.T_StorageBranch s1 , dbo.T_StorageBranch s2 ,
dbo.T_LeechdomIOSheet i , dbo.T_LeechdomIOSheet i2
WHERE i.InBranchKeyId = s1.BranchKeyId
AND i2.OutBranchKeyId = s2.BranchKeyId
AND i.SheetId = i2.SheetId
既有自表關(guān)聯(lián),又有和其他表的關(guān)聯(lián),那建立主從關(guān)系豈不要郁悶死。。。
解決:此時(shí)我的解決方法有兩種,一個(gè)是基于FastReport是支持表和視圖作為數(shù)據(jù)源的,此時(shí)可以事先在數(shù)據(jù)庫中建立視圖,從而使用視圖作為數(shù)據(jù)源解決此表的關(guān)聯(lián)問題,當(dāng)然如沒有項(xiàng)目的需求,大可采用第二種方法,即點(diǎn)擊"添加SQL查詢",這是輸入我們的SQL語句,便會(huì)自動(dòng)生成一個(gè)查詢結(jié)果,我們只需要在報(bào)表設(shè)計(jì)時(shí)用其作為數(shù)據(jù)源就ok了。
七、使用系統(tǒng)變量
情景:我們經(jīng)常會(huì)在報(bào)表打印時(shí)要求顯示當(dāng)前的頁數(shù),當(dāng)前的數(shù)據(jù)量統(tǒng)計(jì)以及當(dāng)前的打印時(shí)間等。
解決:FastReport其實(shí)已經(jīng)我們內(nèi)置了所有這些功能,可以在系統(tǒng)變量中找到,只需要簡單的拖入Date就可以顯示出當(dāng)前日期,拖入PageN就可以顯示頁碼等。
八、使報(bào)表顯示時(shí)呈現(xiàn)常見的奇偶行變色效果。
情景:數(shù)據(jù)量大時(shí)可以方便查看數(shù)據(jù)。
解決:這里同樣有兩種方法,一是在"報(bào)表"--"樣式"中添加一個(gè)樣式,叫做EvenRows,什么樣式都不用設(shè)置,確定即可,然后單擊數(shù)據(jù)區(qū),在外觀的EvenStyle屬性里面選擇此樣式,最后改變Fill屬性的填充顏色即可。第二種方法是通過程序的方式來實(shí)現(xiàn),代碼如下:
private void Data1_BeforePrint(object sender, EventArgs e)
{
if (((Int32)Report.GetVariableValue("Row#")) % 2 == 0)
Data1.FillColor = Color.Gainsboro;
}
這里的Row#為系統(tǒng)內(nèi)置變量,代表行號,我們選出偶數(shù)行后,設(shè)置FillColor為自己想要的顏色即可,但不可為window顏色,這樣就看不出效果了。
九、使用程序操作報(bào)表
情景:在窗體程序中可以使用編程的方式對報(bào)表的相關(guān)字段進(jìn)行操作。
解決:
//獲取數(shù)據(jù)源中列的值
string productName = (string)Report.GetColumnValue("Products.Name");
//獲取數(shù)據(jù)源
DataSourceBase ds = Report.GetDataSource("Products");
//獲取系統(tǒng)變量值
DateTime date = (DateTime)Report.GetVariableValue("Date");
//獲取總計(jì)數(shù)
float sales = Report.GetTotalValue("TotalSales");
//獲取參數(shù)
int myParam = (int)Report.GetParameterValue("MyParameter");
//設(shè)置參數(shù)
report1.SetParameterValue("EmployeeID", 2);
十、備注
1、在FastReport中的變量都使用的是[DataSourceName.FieldName]的形式,凡是以這種形式表示的都需要從數(shù)據(jù)庫中讀取,而普通文本則需要[文本內(nèi)容]這樣的形式就可以搞定。
2、在FastReport中可以設(shè)定數(shù)據(jù)表的別名,這樣可以在多表關(guān)聯(lián)的時(shí)候使用別名與相關(guān)字段對應(yīng)。
3、如果你還沒有心動(dòng)的話,我貼幾張現(xiàn)成的基于Northwind數(shù)據(jù)庫的demo示例看看吧。。。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載