原創(chuàng)|其它|編輯:郝浩|2012-09-17 16:28:30.000|閱讀 447 次
概述:用戶可以在ActiveReports的Sample中找到Annual Report,大家可以通過(guò)運(yùn)行此用例,配合以下文字介紹,學(xué)習(xí)到如何使用子報(bào)表,區(qū)域?qū)傩裕约皥D表控件來(lái)快速的建立一個(gè)年度報(bào)表。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
用戶可以在ActiveReports的Sample中找到Annual Report,大家可以通過(guò)運(yùn)行此用例,配合以下文字介紹,學(xué)習(xí)到如何使用子報(bào)表,區(qū)域?qū)傩裕约皥D表控件來(lái)快速的建立一個(gè)年度報(bào)表。以下按照Solution Explorer窗口里的文件逐個(gè)介紹。
1. 年度報(bào)表(主報(bào)表)
以下介紹的是主報(bào)表的建立, 此年度報(bào)表分為三頁(yè), 縮影如下圖。
a) 報(bào)表頁(yè)眉區(qū)域(第一,二頁(yè))
在這次介紹的示例中, 我們的報(bào)表頁(yè)眉區(qū)域分為兩頁(yè)。 這里通過(guò)使用PageBreak控件將ReportHeader分成兩頁(yè), 并且將ReportHeader區(qū)域的NewPage屬性設(shè)置為After. 另外, 這個(gè)報(bào)表會(huì)告訴用戶可以使用Label的BackColor和ForeColor屬性建立需要區(qū)域視覺(jué)分辨性強(qiáng)的報(bào)表。
這個(gè)報(bào)表的ReportHeader區(qū)域安插了SubReport控件, 在ReportStart事件里, 使用程序編譯連接至ProductSalesByCategory報(bào)表。
建議在ReportStart事件中初始化報(bào)表, 而并非是在每個(gè)區(qū)域的Format事件。
CSharp:
private void AnnualReport_ReportStart(object sender, System.EventArgs eArgs)
{
//Set subreport control's Report property to a new report instance
this.srptTop10.Report = new Top10();
this.srptProductSales.Report = new ProductSalesByCategory();
}
VB:
Private Sub AnnualReport_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart
'Set subreport control's Report property to a new report instance
Me.srptTop10.Report = New Top10()
Me.srptProductSales.Report = New ProductSalesByCategory()
End Sub
ReportHeader區(qū)域右半部分黃色背景的, 使用的是Shape控件, 通過(guò)BackColor屬性設(shè)置顏色。 左半邊則使用了Picture控件。
b) Detail Section 明細(xì)區(qū)域(第三頁(yè))
明細(xì)區(qū)域包含兩個(gè)SubReport控件,分別連接為Top10Customers和Top10Products報(bào)表。通常,在很多報(bào)表中,明細(xì)區(qū)域會(huì)運(yùn)行很多次;但在此報(bào)表中,明細(xì)區(qū)域只有Label,而并無(wú)綁定的數(shù)據(jù),因此只會(huì)運(yùn)行一次。這樣的話,兩個(gè)子報(bào)表就可以在ReportStart事件中被初始化。
注意:請(qǐng)將ReportFooter區(qū)域的是Height屬性設(shè)置為0. 這是因?yàn)椋嗣骷?xì)區(qū)域,頁(yè)眉頁(yè)腳區(qū)域在一頁(yè)中是同時(shí)出現(xiàn)的,如果不想使用頁(yè)腳,則需要將其高度設(shè)置為0,而并不能夠單獨(dú)刪除頁(yè)腳。
c) GetDBPath 獲取數(shù)據(jù)源
對(duì)于數(shù)據(jù)庫(kù)的連接,在論壇上知識(shí)庫(kù)與精華區(qū)“ActiveReports 6.0產(chǎn)品使用指南 (2)快速綁定數(shù)據(jù)源 ”中有詳細(xì)的介紹。這里的示例使用的數(shù)據(jù)庫(kù)依然為NorthWind。
2. ProductSalesByCategory報(bào)表
這可以是一個(gè)單獨(dú)的ActiveReport,但在這個(gè)年度報(bào)表示例中被使用為SubReport,其放置的區(qū)域?yàn)镽eportHeader區(qū)域(第二頁(yè)報(bào)表的左下角)。
CSharp:
private void ProductSalesByCategory_DataInitialize(object sender, System.EventArgs eArgs)
{
//Create dynamic datasource using sample database
DataDynamics.ActiveReports.DataSources.OleDBDataSource _ds = new DataDynamics.ActiveReports.DataSources.OleDBDataSource();
_ds.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + GetDBPath.GetPath() + @"\nwind.mdb";
_ds.SQL = "SELECT DISTINCTROW Categories.CategoryName, Sum([Order Details Extended].ExtendedPrice) AS ProductSales FROM Categories INNER JOIN (Products INNER JOIN (Orders INNER JOIN [Order Details Extended] ON Orders.OrderID = [Order Details Extended].OrderID) ON Products.ProductID = [Order Details Extended].ProductID) ON Categories.CategoryID = Products.CategoryID WHERE (((Orders.OrderDate) Between #1/1/95# And #12/31/95#)) GROUP BY Categories.CategoryName ORDER BY Categories.CategoryName";
this.DataSource = _ds;
}
private void Detail_Format(object sender, System.EventArgs eArgs)
{
// Check _iRow value to see if we need to highlight the row or not.
if(this._iRow%2 == 0)
this.Detail.BackColor = Color.LightYellow;
else
this.Detail.BackColor = Color.Transparent;
this._iRow++;
}
VB:
Private Sub ProductSalesByCategory_DataInitialize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DataInitialize
'Create dynamic datasource using sample database
Dim _ds As New DataDynamics.ActiveReports.DataSources.OleDBDataSource()
_ds.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" + GetDBPath.GetPath() + "\nwind.mdb"
_ds.SQL = "SELECT DISTINCTROW Categories.CategoryName, Sum([Order Details Extended].ExtendedPrice) AS ProductSales FROM Categories INNER JOIN (Products INNER JOIN (Orders INNER JOIN [Order Details Extended] ON Orders.OrderID = [Order Details Extended].OrderID) ON Products.ProductID = [Order Details Extended].ProductID) ON Categories.CategoryID = Products.CategoryID WHERE (((Orders.OrderDate) Between #1/1/95# And #12/31/95#)) GROUP BY Categories.CategoryName ORDER BY Categories.CategoryName"
Me.DataSource = _ds
End Sub
Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format
' Check _iRow value to see if we need to highlight the row or not.
If Me._iRow Mod 2 = 0 Then
Me.Detail.BackColor = Color.LightYellow
Else
Me.Detail.BackColor = Color.Transparent
End If
Me._iRow = Me._iRow + 1
End Sub
3. StartupForm 起始表格
這個(gè)表格使用了ActiveReports的Viewer控件。 將Viewer的Dock屬性設(shè)置為Fill,表格在運(yùn)行時(shí)便會(huì)自動(dòng)調(diào)整大小。 用戶可以右擊選擇ViewCode來(lái)查看程序。
4. Top10Customers報(bào)表和Top10Products報(bào)表
Top10Customers和Top10Products兩個(gè)報(bào)表都各自只有兩個(gè)區(qū)域,即GroupHeader和Detail。請(qǐng)將兩個(gè)報(bào)表的PrintWidth屬性設(shè)置為3.135 inches, 這樣兩個(gè)報(bào)表的大小正好合適于主報(bào)表。
這兩個(gè)子報(bào)表的GroupHeader區(qū)域都被Chart控件填充著。大家可以點(diǎn)擊圖表,查看一下這個(gè)圖表屬性的設(shè)置。在屬性窗口的下方,點(diǎn)擊藍(lán)色的Data Source,圖表綁定的數(shù)據(jù)源窗口會(huì)彈出,在Query框中,可以查看到如何選擇前10位的SQL語(yǔ)句。對(duì)于如何在ActiveReports中建立圖表,我們會(huì)在下一個(gè)主題中詳細(xì)介紹)。
在每個(gè)子報(bào)表的明細(xì)區(qū)域,設(shè)置兩個(gè)TextBoxes和一個(gè)Label控件, 可以右擊,選擇ViewCode來(lái)查看如何設(shè)置數(shù)據(jù)源, 傳遞數(shù)據(jù)到圖表上, 以及交替設(shè)置明細(xì)部分的背景色, 以及如何設(shè)置Label的Text屬性。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:Grapecity