微软SQL Server 2000 Reporting Services介绍

王朝mssql·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

微软SQL Server 2000 Reporting Services介绍

[摘要 ] 本文介绍了如何直接修改.rdl文件来实现报表.实际上.NET开发环境中的

报表设计器也只是对.rdl文件进行编辑.

[关键字] Reporting Services,.NET Framework. DrillThrough,rdl文件,rds文件

n 如何将报表系统集成到系统中

Reporing Services的帮助中提到:“有两种集成方式,通过URL访问或者利用Web Service,用URL的方式比较快捷,如果用Web Service就必须手工写一些代码.”具体步骤还需要详细阅读帮助.

n 修改.rdl快速实现报表

在.NET开发环境中提供了Report Designer来开发报表,但对于初学者,建议最好要知道其根本的原理,如果用编辑器将.rdl打开就会发现该文件就是一个XML文件,如果安装了Sample,到文件目录D:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\Samples\Reports下就可以看到如下文件,AdventureWorks.rds,该文件就是设置数据源的XML文件,用编辑打开看一下,

*********************************************************

<Extension>SQL</Extension>//表示数据源类型为SQL

<ConnectString>data source="(local)";initial catalog=AdventureWorks2000;integrated security=SSPI;persist security info=False</ConnectString>//这里的integrated security表示认证方式,如果有用户和密码的话,应该把这一项去掉.如果要改变数据源的话,应该把data source和initial catalog分别修改一下

.rdl文件也可以用编辑器打开这里选取Employee Sales Summary.rdl文件的一段做说明:

<Header>//这一段对应报表中的标题,

<TableRows>

<TableRow>

<Height>0.375in</Height>

<TableCells>

<TableCell>

……

<Value>Current Month Order Summary</Value>//在图片上可以看到这就是报表的标题!

…….

</Header>

<Details>//这一段对应报表中的标题

<TableRows>

<TableRow>

<Height>0.25in</Height>

<TableCells>

<TableCell>

<ReportItems>

<Textbox Name="OrderNumber">//在图片中可以看到OrderNumber就是第一列的标题!如果要修改的话,只要把名称修改一下就可以了!

<Style>

………….

</Details>

<TableGroups>//从这里开始就正式显示数据了

<TableGroup>

………..

<Value>=Sum(Fields!Sales.Value)</Value>//Sales为一个Field,在后面会定义

….

</TableGroups>

<TableColumns>//这一段表示报表有三列,如果要减少列或增加列,一定要先将这里修改一下,然后修改上面的两段代码,否则就会显示列数不匹配

<TableColumn>

<Width>1.125in</Width>

</TableColumn>

<TableColumn>

<Width>3.625in</Width>

</TableColumn>

<TableColumn>

<Width>1.125in</Width>

</TableColumn>

</TableColumns>

<Query>//这是最核心的部分,也就是SQL语句!其中还用到了几个参数

例如@ReportMonth就是图片顶部的Year查询条件

<DataSourceName>AdventureWorks</DataSourceName>

<CommandText>SELECT Employee.FirstName + ' ' + Employee.LastName AS Employee, DATEPART(Year, SalesOrderHeader.OrderDate) AS OrderYear, DATEPART(Month, SalesOrderHeader.OrderDate)

AS OrderMonthNum, DATENAME(Month, SalesOrderHeader.OrderDate) AS OrderMonth, SUM(SalesOrderDetail.LineTotal) AS Sales

FROM SalesOrderHeader INNER JOIN

&lt;= @ReportMonth)

………………….

SalesOrderHeader.OrderDate)</CommandText>

<QueryParameters>

<QueryParameter Name="@ReportYear">

<Value>=Parameters!ReportYear.Value</Value>

</QueryParameter>

<Fields>//前面提到的Sales是一个定义过的Field,这里就是Field的定义,如果要增加数据,这里也要进行修改,

<Field Name="Employee">

<DataField>Employee</DataField>//Employee对应为SQL查询语句的返回结果!

<rd:TypeName>System.String</rd:TypeName>

</Field>

….

</Fields>

<ReportParameter Name="ReportMonth">

<DataType>Integer</DataType>//Month控件为Integer类型

<DefaultValue>

<Values>

<Value>6</Value>

</Values>

</DefaultValue>

<Prompt>Month</Prompt>//Prompt就是报表顶部的查询控件,Reporting Ser vices还提供DateTime类型

<ValidValues>

<ParameterValues>

<ParameterValue>

<Value>1</Value>

<Label>January</Label>

………….

<结束>

**********************************************************

以上简单的对rdl文件做了分析,很多功能没有分析到,具体可见Reporing Services帮助中的Report Definition XML Elements页面,里面详细的列出了rdl文件支持的所有元素,例如链接功能对应为DrillThrough!如果要看链接的具体实现,可以参照Territory Sales Drilldown.rdl文件,用”Action”搜一下就可以了.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航