微軟SQL Server 2000 Reporting Services介紹(5)
發(fā)表時間:2023-08-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]微軟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ù)覽.