首页  ·  知识 ·  数据库
SQL数据库灵活生成报表的捷径
不详  IT专家网  MS-SQL  编辑:德仔   图片来源:网络
不考虑模板的选择,生成报表的能力依赖于Reporting Services的Report Designer组件,它组成了SQL Server 2005 Express Edition中提供这个功能的唯一
不考虑模板的选择,生成报表的能力依赖于Reporting Services的Report Designer组件,它组成了SQL Server 2005 Express Edition中提供这个功能的唯一内置机制。(正式版本包含了一个可选的解决方案,以Report Builder的形式,它促进了终端用户所带来的点对点报表)。它的实施是与Business Intelligence Development Studio完全集成在一起的,因此,它的所有动作(包括发布一个最终产品到Report Server Web站点)是在相同的界面中执行的(与其它Microsoft Integrated Development Environment产品是一致的)。Report Designer生成一个基于XML的Report Definition Language格式的报表定义(.rdl)文件,它指定了一个目标报表的数据源(基于后台查询),以及它的视觉特征,例如布局或形式。利用无人参与帐户管理外部数据源
  现在我们要生成一个结果而不使用向导的帮助,以便更加熟悉Business Intelligence Development Studio界面可用的选项。
  基于Report Server Project模板创建一个新项目(通过New Project...菜单)。这应该会出现带有两个子文件夹为Shared Data Sources和Reports的Solution Explorer窗口。从随之出现的上下文敏感菜单中,选择Add New Item...项。在这之后出现的Add New Item对话框中,选择Report模板并输入它的名称(例如Individual Customer Addresses.rdl)。点击Add将显示一个空白的、在中央位置的区域,它显示新创建的RDL文件(以及一个相应的Datasets窗口),和三个标签页Data、 Layout以及 Preview。下一步是暴露要生成我们的报表所必需的数据。在SQL Server中正确使用参数报表
  后台查询结合从AdventureWorks数据库的表Person.Contact、SalesIndividual、Sales.CustomerAddress、Person.Address、Person.CountryRegion和Person.StateProvince提取来的数据。为了使它们可用,我们需要定义一个相应的数据集(包括一个数据源和一个查询,这个查询指定我们的报表将依赖于的记录)。这是通过Business Intelligence Development Studio中报表窗口的Data标签页中的Dataset列表框来完成的。在选择了它的项后,你将看到Data Source对话框,在这个对话框中你需要指定数据集名称、它的类型(Microsoft SQL Server)和一个相应的连接字符串。设置这些参数的最简单方法是点击Edit...命令按钮,它会弹出Connection Properties对话框,在这里(在General标签页上)你可以简单地指向本地服务器和SQL Server 2005 Express Edition实例,确保登录使用的是Windows Authentication,并指定一个要连接到的数据库(在我们的例子中是AdventureWorks)。这会导致连接字符串格式为Data Source=localhost\SQLExpress;Initial Catalog=AdventureWorks。检查一下在Credentials 标签页上选择了Use Windows Authentication (Integrated Security)并点击OK来返回到我们的报表的Data标签页。
  这时,你已经准备好指定哪些数据记录是范围内的。这可以通过使用默认的普通查询设计器或它的图形化工具来实现。对于前者,你只要简单地复制和黏贴这个查询(Command类型列表框设置为Text)。要使用后者,点击工具条中的开关按钮,这将自动地改变活跃的窗口,将它分隔为四个水平的面板,分别用于表、一个包含选择的字段(以及它们的别名、过滤和排序参数)的网格、一个相应的T-SQL语句、和它的执行结果。扩展的工具条暴露了一些额外的命令按钮。使用最右边的一个按钮来添加所要求的表,包括Address (Person)、 Contact (Person)、CountryRegion (Person)、 CustomerAddress (Sales)、 Individual (Sales)和StateProvince (Person)到新创建的数据集中。接下来,选中SELECT语句中所列出的每个字段左边的复选框,也就是Individual (Sales).CustomerID、Contact (Person).LastName (排序类型为 Ascending Sort, Sort Order为1)、Contact (Person).FirstName (排序类型为Ascending Sort,Sort Order 为2)、Address (Person).AddressLine1、Address (Person).City、StateProvince (Person).Name、Address (Person).AddressLine1 (别名为 StateProvince)和CountryRegion (Person).Name (别名为 CountryRegion)。当查询完成时,你可以检查它语法的正确性和执行它来确认它会生成期望的输出(确保在你这么做之前,所有相关的外键约束都出现在上面窗口面板中的图表中)。这个步骤完成了在我们的项目中配置报表定义文件的数据部分。
 我们现在已准备好解决报表的可视部分。这个过程涉及定义它的布局、包括静态和数据范畴(也就是熟知的数据区)元素。正如我们所提到的,我们的目标是生成与使用Report Project Wizard所生成的同样结果(按字母顺序根据最后一个和第一个名称、并根据国家和区域分组地罗列出AdventureWorks中每个客户的地址数据)。要完成这个,我们需要开始在Business Intelligence Development Studio中转到我们的报表定义窗口中的Layout标签页下,激活Toolbox窗口(通过从View菜单选择它的入口或按下Ctrl+Alt+X组合键),并激活Layout、Report Borders和Report Formatting工具条。
  要创建一个显示于报表最初页面上的报表标签,那么在Toolbox中选择Textbox项,将它拖拉到设计界面上面,并将它的大小扩展到适合你要输入的描述性名称(例如Individual Customers of AdventureWorks)。通过Properties窗口(或通过Report Formatting工具条)修改它的显示如所需要的那样。要配置一个顶级分组(在我们的例子中,基于国家或区域),那么添加List元素(再次地,通过从Toolbox把它拖拉过来)到新创建的文本框之下,将它的大小调整为适合设计界面的其它区域,并设置它的DataSetName属性为AdventureWorks。点击Grouping入口的省略号按钮来触发Grouping and Sorting Properties对话框显示出来。在Group on部分的Expression列表框中,点击General标签页,选择=Fields!CountryRegion.Value并通过Sorting标签页指定它为Ascending排序。表示记录每个分组的实际值将出现在一个文本框中,这个文本框是你从Toolbox拖拉过来到这个表单的,并将它放到新添加的列表之上(确保它的名称显示为它的Parent属性的值)。给它指定一个描述性的名称(例如txtCountryRegion)并在Value列表框中选择=Fields!CountryRegion.Value。(通过Report Formatting工具条或它的Font属性来修改它的显示为所期望的值)。
  我们的查询所返回的各条记录将显示在一个表中。从Toolbox 中将它的图标拖拉到这个表单的下部并指定它的DataSetName属性值为AdventureWorks。默认情况下,这个表包含三条记录,它们标记为Header、Detail和 Footer。要符合第二级分组(基于别名为StateProvince的字段的值),我们将直接添加一条额外记录到Header下面。要执行这个,从Detail记录句柄(在它左边的一个灰色方框)中的上下文敏感菜单中选择Insert Group...项。在随之出现的Grouping and Sorting Properties对话框中,在General标签页上,输入一个描述性的名称(例如tblStateProvince),在Group on部分的Expression列表框中选择=Fields!StateProvince.Value,清除Include group footer复选框,并激活Repeat group header选项。转到Sorting标签页并添加=Fields!StateProvince.Value到Expression部分,在Sort on部分的Direction字段为Ascending排序。点击OK来确定你的选择。
  要填入Detail记录,我们将使用我们的AdventureWorks数据集的各个组件。为了查看它们,激活Dataset窗口,它应该包含与我们的查询中SELECT条件子句中涉及的字段所相应的七个入口。将第一个(CustomerID)从Dataset窗口拖拉到Detail记录中的最左边空闲字段(注意,这将自动生成它的值为=Fields!CustomerID.Value并在Header记录中输入Customer ID)。对FirstName、LastName、AddressLine1(改变它的头为Address)和City字段重复相同的过程(必要的话,使用表中的上下文敏感菜单中的Insert Column to the Right选项来添加额外的字段)。此外,为了确保我们的表头将出现在报表的每个页面上,选择TableRow1元素(通过点击它的句柄),并改变它的RepeatOnNext属性为True。
  使用Report Designer的Preview标签页来决定我们的执行的结果。很显然,是可以通过利用Business Intelligence Development Studio中其它可用的更加高级的图形设计器特性来进一步改进它的外观的。
 
本文作者:不详 来源:IT专家网
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的