明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

微軟SQL Server 2000 Reporting Services介紹(5)

[摘要]微軟SQL Server 2000 Reporting Services介紹(五) [摘要 ] 本文主要介紹了如何綜合利用Report Designer和修改rdl文件來快速、靈活的實(shí)現(xiàn)報表...
微軟SQL Server 2000 Reporting Services介紹(五)





[摘要 ] 本文主要介紹了如何綜合利用Report Designer和修改rdl文件來快速、靈活的實(shí)

現(xiàn)報表氐憬步飭似渲?lt;/SPAN>Matrix格式和Toggle功能的實(shí)現(xiàn)

[關(guān)鍵字] Reporting Services,.NET Framework.,rdl文件,Matrix格式,Toggle功能



n 如何實(shí)現(xiàn)Matrix


上圖是Reporting Services中提供的一個例子,縱向?yàn)橐粋公司的產(chǎn)品類別和子類別,橫向?yàn)槟攴莺图径,這種顯示模式在很多的報表中都可以套用,例如一般的集團(tuán)公司會在縱向顯示出所有分子公司和部門。下面從rdl文件的角度分析該例子是如何實(shí)現(xiàn)的,首先來看看其中的查詢語句

<Query>

<DataSourceName>AdventureWorks</DataSourceName>//指定數(shù)據(jù)源名稱

<CommandText>SELECT ProductCategory.Name AS ProdCat, //產(chǎn)品類別ProductSubCategory.Name AS SubCat, //產(chǎn)品子類別

DATEPART(yy, SalesOrderHeader.OrderDate) AS OrderYear, //年份

'Q' + DATENAME(qq, SalesOrderHeader.OrderDate) AS OrderQtr, //季度SUM(SalesOrderDetail.UnitPrice * SalesOrderDetail.OrderQty) AS Sales//銷售數(shù)據(jù)



FROM ProductSubCategory INNER JOIN

………………….

WHERE (SalesOrderHeader.OrderDate BETWEEN '1/1/2002' AND '12/31/2003')//時間范圍

//這里的GROUP BY保證數(shù)據(jù)的層次關(guān)系

GROUP BY

DATEPART(yy, SalesOrderHeader.OrderDate), ProductCategory.Name, ProductSubCategory.Name, 'Q' + DATENAME(qq,

SalesOrderHeader.OrderDate), ProductSubCategory.ProductSubCategoryID</CommandText>

下面再來看看rdl中是如何指定季度列隱藏在年份下面的

<ColumnGrouping>

<DynamicColumns>

<Grouping Name="OrderQtr">//該動態(tài)列的名稱為OrderQtr

<GroupExpressions>

<GroupExpression>=Fields!OrderQtr.Value</GroupExpression>

</GroupExpressions>

</Grouping>

<Visibility>//這一段實(shí)現(xiàn)了季度列的隱藏,并和OrderYear建立了Toggle關(guān)系,僅僅三行代碼就實(shí)現(xiàn)了一種復(fù)雜的數(shù)據(jù)層次關(guān)系,可見Reporting Services的功能之強(qiáng)大.

<ToggleItem>OrderYear</ToggleItem>

<Hidden>true</Hidden>

</Visibility>

同樣,產(chǎn)品類別和產(chǎn)品子類別也是這樣建立關(guān)系的,雖然通過.NET開發(fā)環(huán)境可以很容易的實(shí)現(xiàn)該功能,但如果能夠熟練的修改rdl文件來實(shí)現(xiàn)功能,能節(jié)約大量的時間。



下面看看該報表是如何顯示銷售數(shù)據(jù)的

<MatrixRows>

<MatrixRow>

<MatrixCells>

<MatrixCell>

<ReportItems>

<Textbox Name="Sales">

<Style>

<BorderStyle>

<Default>Solid</Default>

</BorderStyle>

<PaddingLeft>2pt</PaddingLeft>

<Format>$#,###</Format>//這里指定了銷售數(shù)據(jù)顯示的格式,包括美元符號和千分位,從這里入手修改為人民幣符號是比較快捷的

<BackgroundColor>White</BackgroundColor>

<FontSize>9pt</FontSize>

<PaddingRight>2pt</PaddingRight>

</Style>

<Value>=Sum(Fields!Sales.Value)</Value>//顯示銷售數(shù)據(jù)的和

</Textbox>



好了,分析完這些關(guān)鍵代碼,整個Company Sales.rdl(可以在MS SQL Server安裝目錄下找到)就很好理解了,其他的許多代碼大部分都是設(shè)置報表格式的,如果改寫的時候覺的這個例子的格式比較賞心悅目,完全可以把其中的<Style>部分代碼拿出來貼上去,如果依靠.NET中的Report Designer來做就不那么靈活了。經(jīng)過一段時間的使用,感覺比較好的方式是,先通過Report Designer把報表的框架做出來,然后如果要做一些細(xì)節(jié)的修改,就直接修改rdl文件好了,rdl修改后,返回到Report Designer中進(jìn)行預(yù)覽.