`

Microsoft SQL Reporting Services 教程4: 在报表中使用动态查询

阅读更多
1:创建新报表  
在开始使用动态查询之前,您必须首先创建一个带有报表的报表服务器项目,然后向该项目中添加一个报表项。
创建报表服务器项目
在 Business Intelligence Development Studio 中,报表包含在报表服务器项目中。
创建新的报表服务器项目
1.        单击“开始”,依次指向“程序”和 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。
2.        在“文件”菜单上,指向“新建”,再单击“项目”。
3.        在“项目类型”列表中,单击“商业智能项目”。
4.        在“模板”列表中,单击“报表服务器项目”。
5.        在“名称”中,键入 Dynamic Query Tutorial。
6.        单击“确定”以创建项目。
创建报表
创建报表定义文件
1.        在解决方案资源管理器中,右键单击“报表”,指向“添加”,再单击“新建项”。
注意:

如果未显示解决方案资源管理器窗口,请在“视图”菜单中单击解决方案资源管理器。
2.        在“添加新项”中,单击“报表”。
3.        在“名称”中,键入 Employee List.rdl,再单击“添加”。此时,系统将打开一个包含“数据”、“布局”和“预览”选项卡的视图。这是 Business Intelligence Development Studio 的报表设计器组件。系统将在“数据”视图中打开此报表。

2:创建 Employees 数据集  
该报告将根据名为 Employees 的数据集显示员工列表。在 Reporting Services 中,数据集可以指定数据源连接和检索数据的查询。
创建数据源和数据集
创建数据源和数据集
1.        在数据视图顶部的“数据集”中,选择“新建数据集”。此时,将显示“数据源”对话框。
2.        在“名称”中,键入 AdventureWorks。
3.        在“类型”中,选择 Microsoft SQL Server。
4.        在“连接字符串”中,键入以下内容:
Data source=(local); initial catalog=AdventureWorks
注意:

此连接字符串假定 Business Intelligence Development Studio、报表服务器和 AdventureWorks 数据库都安装在本地计算机上,并且您有权登录 AdventureWorks 数据库。有关连接字符串的详细信息,请参阅连接数据源和数据源(“常规”选项卡,报表设计器)。

5.        单击“确定”。AdventureWorks 将添加到“数据集”窗格中。
重命名数据集
如果报表或项目中没有其他数据源,则创建的第一个数据源将按所选数据库命名。由于此报表将包含两个数据集,所以应使用更具说明性的名称重命名第一个数据集。若要更改数据集的名称,需要执行下列步骤。
重命名数据集
1.        在工具栏上单击“编辑所选的数据集”(...) 按钮。
2.        在“名称”中,键入 Employees。
3.        单击“确定”。
在数据集中添加查询
Employees 数据集从 AdventureWorks 数据库检索员工数据。
在数据集中添加查询
1.        在“数据”视图中,在通用查询设计器的顶部窗格中键入或者复制并粘贴以下查询:
复制到剪贴板
Select c.firstname, c.lastname, e.title, d.departmentID From HumanResources.EmployeeDepartmentHistory D INNER JOIN HumanResources.Employee E ON D.EmployeeID = E.EmployeeID INNER JOIN Person.Contact C ON E.ContactID = C.ContactID Where D.DepartmentID=1 Order By c.lastname
此查询以后将变为一个表达式;如果首先创建一个基本查询,报表设计器就能自动创建字段列表。如果一开始就编写表达式,则必须手动更新字段列表。
2.        若要查看查询的结果,请单击查询设计器工具栏上的“运行”(!) 按钮。

3:创建部门数据集  
此报表使用的参数将最终按照所选部门来筛选 Employee 数据集。参数列表中的值由 Department 数据集填充。
创建数据集
创建数据集
1.        在数据视图顶部的“数据集”中,选择“新建数据集”。“数据集”对话框随即出现。
注意:

如果已为报表提供了数据源,则报表设计器将显示“数据集”对话框而不是“数据源”对话框。创建 Employee 数据集时已定义了数据源。
2.        在“名称”中,键入 Departments。
3.        单击“确定”。
向数据集添加查询
Department 数据集将为本教程后面定义的 Deparment 参数填充可用值列表。
向数据集添加查询
1.        在“数据”视图中,选中 Department 数据集后,在通用查询设计器的顶部窗格中键入或复制和粘贴以下查询:
复制到剪贴板
SELECT 0 AS DepartmentID, 'All' AS Name UNION SELECT DepartmentID, Name FROM HumanResources.Department ORDER BY Name
此 UNION 查询将创建一个部门列表,在此列表顶部包含词“All”。
注意:

默认情况下,通用查询设计器显示在“数据”视图中。尽管也可以使用图形查询设计器编辑查询;但还是应该始终使用通用查询设计器编辑 UNION 查询。
2.        若要查看查询的结果,请单击查询设计器工具栏的“运行 (!)”按钮。

4:定义报表布局  
因为已定义了数据集,您现在可以向报表中添加表数据区域了。数据区域是一种数据绑定报表项。添加到报表中的表数据区域将包含 Employees 数据集中的数据。第一次打开表数据区域时,表数据区域包含三行三列。每个行用于指定以下信息:
•        表头
•        详细信息
•        表尾
在本教程中,表格表头和表尾不是直接指定的。因此,您将只使用“详细信息”部分来指定重复的雇员数据行。将字段拖到“详细信息”部分时,会自动指定表格表头,而根本不会使用表格的表尾部分。
添加表数据区域
向报表添加表数据区域和字段
1.        单击“布局”选项卡。
2.        在“工具箱”中,单击“表”,再单击设计图面。报表设计器将在设计图面的宽度内绘制一个具有三列的表。
此时,“工具箱”可能显示为设计区域左侧的一个选项卡。若要打开“工具箱”,请将指针移到“工具箱”选项卡上。
注意:

如果“工具箱”不可见,请单击“视图”菜单中的“工具箱”。
3.        在“数据集”窗口中,展开 Employees。
4.        将 FirstName 字段从“数据集”窗口拖到该表中第一列的中间(详细信息)行中。
注意:

如果“数据集”窗口不可见,请单击“视图”菜单中的“数据集”。
5.        将 LastName 字段从“字段”窗口拖到该表第二列的中间(详细信息)行中。
6.        将 title 字段从“字段”窗口拖到该表第三列的中间(详细信息)行中。

5:添加报表参数  
在本课程中,将添加一个报表参数以筛选由查询返回的数据。报表基于用户所选的部门筛选数据。
本教程中的动态查询基于参数值构造。如果将参数数据直接合并到动态查询中,则必须使用可用值列表(也称为有效值);否则,您的报表服务器将容易受到攻击。报表服务器依据可用值列表验证用户的输入,并仅允许使用该列表中的值。这样,您可以控制动态查询中使用的值,并保证报表的安全。但是,如果没有使用可用值列表(“可用值”设置为“无查询”,并且值列表保留空白),并且数据类型为“字符串”,则系统将向用户显示一个可以使用任何值的文本框。在这种情况下,报表用户可能在该文本框中键入 SQL 语法,从而导致报表和服务器容易受到 SQL 注入攻击。如果用户有足够的权限执行新的 SQL 语句,则可能在服务器上产生意外结果。在任何从参数直接合并数据的查询中,请务必使用可用值列表,并确保运行报表的用户仅具有查看报表中数据所需的权限。
添加报表参数
添加参数
1.        在“报表”菜单上,单击“报表参数”。
注意:

如果“报表”菜单不可用,则单击“布局”选项卡。
2.        单击“添加”以添加新的报表参数。
3.        按照以下方式设置参数属性:
o        对于“名称”和“提示”,请键入 Department。
o        对于“数据类型”,请选择“字符串”。
o        清除下列复选框:“隐藏、内部、多值”、“允许空值”以及“允许空白值”。
o        对于“可用值”,请选择“来自查询”。
o        对于“数据集”,请选择“部门”。对于“值字段”,请选择 DepartmentID。对于“标签字段”,请选择“名称”。
o        对于“默认值”,请选择“无查询”。
o        在“无查询”旁边的框中,键入 0。
4.        单击“确定”。
5.        单击“预览”选项卡。该表将基于静态查询显示一部分员工列表 (DepartmentID = 1)。这时参数不筛选数据。
6:使用动态查询更新 Employees 数据集  
在 Employees 数据集中使用静态查询的报表应在正确运行。以下步骤将静态查询替换为动态查询。
动态查询的值为表达式。查询构造为表达式时,不能在查询设计器中使用 Run (!) 命令验证语法,也不能确认语法是否返回了期望的结果。若要检查语法,请预览报表以确保处理后的报表包含数据。
添加动态查询
若要在报表定义中添加动态查询,请执行以下操作:
1.        单击“数据”选项卡。
2.        选择 Employees 数据集,再使用通用查询设计器,将原始查询替换为以下表达式:
复制到剪贴板
="SELECT c.firstname, c.lastname, e.title, d.departmentID " & "From HumanResources.EmployeeDepartmentHistory D " & "INNER JOIN HumanResources.Employee E " & "ON D.EmployeeID = E.EmployeeID " & "INNER JOIN Person.Contact C " & "ON E.ContactID = C.ContactID " & Iif(Parameters!Department.Value = 0, "", "WHERE D.DepartmentID = " & Parameters!Department.Value) & "ORDER BY C.LastName"
仅当未选择 All 时,此表达式才生成包含 WHERE 子句的查询。WHERE 子句包含 Department 参数中的值。 必须使用通用查询设计器创建表达式。
3.        保存报表项目。在“文件”菜单上,单击“全部保存”。
4.        单击“预览”选项卡。默认情况下,显示所有雇员。如果选择了特定部门后查看报表,则将显示该部门的雇员。
注意 每次运行报表时,都将在 Employees 数据集中使用表达式生成一个查询字符串。如果选中 All (内部 DepartmentID 值为 0),则生成的查询不带 WHERE 子句,这将导致检索所有雇员。如果 选择一个部门,则将在 WHERE 子句中使用选定部门的 DepartmentID 构造查询,并将数据限制为该部门的数据。
分享到:
评论

相关推荐

    一个采用MVC架构设计、Java实现的泡泡堂游戏。.zip

    一个采用MVC架构设计、Java实现的泡泡堂游戏。zip是一个基于Java语言开发的项目,旨在通过实践帮助初学者理解MVC(Model-View-Controller)设计模式在游戏开发中的应用。该项目不仅涵盖了游戏逻辑和用户交互,还注重代码结构和可维护性。项目的核心是MVC架构,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据和业务逻辑,视图负责展示数据,控制器则作为两者之间的桥梁,处理用户输入并更新视图。这种设计模式有助于提高代码的可读性和可维护性,同时也使得项目的扩展和修改变得更加容易。该资源适合初学者学习,因为它的难度适中,功能清晰。通过这个项目,开发者可以深化对Java语言的理解,掌握MVC模式的应用,同时提升在游戏开发方面的能力。此外,项目源代码是公开的,初学者可以直接下载使用,查看源代码,理解项目的实现方式,也可以在此基础上进行修改和扩展,以进一步提高自己的编程技能。总之,“一个采用MVC架构设计、Java实现的泡泡堂游戏.zip”是一个宝贵的学习资源,它为初学者提供了一个实践平台,帮助他们在游戏开发中学习和成长。

    基于java的坦克大战游戏.zip

    基于Java的坦克大战游戏是一款经典的射击类游戏,通过Java编程语言实现。这款游戏不仅涵盖了面向对象编程、多线程处理和图形绘制等关键技术,还运用了Socket进行客户端与服务器端的通信,使玩家能够通过网络进行对战。游戏中,玩家需要操纵坦克守卫基地,同时尽可能摧毁敌方坦克,并有机会获得超级武器来提升坦克属性。其丰富的功能模块和高度互动性,使其成为学习和实践Java编程技术的优秀资源。

    原版apsw-3.39.4.0-cp311-cp311-win_arm64.whl-下载即用直接pip安装.zip

    安装前的准备 1、安装Python:确保你的计算机上已经安装了Python。你可以在命令行中输入python --version或python3 --version来检查是否已安装以及安装的版本。 个人建议:在anaconda中自建不同python版本的环境,方法如下(其他版本照葫芦画瓢): 比如创建python3.8环境,anaconda命令终端输入:conda create -n py38 python==3.8 2、安装pip:pip是Python的包管理工具,用于安装和管理Python包。你可以通过输入pip --version或pip3 --version来检查pip是否已安装。 安装WHL安装包 1、打开命令行(或打开anaconda命令行终端): 在Windows上,你可以搜索“cmd”或“命令提示符”并打开它。 在macOS或Linux上,你可以打开“终端”。 2、cd到whl文件所在目录安装: 使用cd命令导航到你下载的whl文件所在的文件夹。 终端输入:pip install xxx.whl安装即可(xxx.whl指的是csdn下载解压出来的whl) 3、等待安装完成: 命令行会显示安装进度,并在安装完成后返回提示符。 以上是简单安装介绍,小白也能会,简单好用,从此再也不怕下载安装超时问题。 使用过程遇到问题可以私信,我可以帮你解决! 收起

    钢材表面缺陷检测数据集

    钢材表面缺陷检测数据集是一个专门针对钢材表面缺陷检测的深度学习训练与测试资源。这个数据集的创建旨在推动钢铁工业中自动化检测技术的发展,提高生产效率和产品质量。它包含了大量经过精心标注的真实钢材图像,用于训练和验证深度学习模型,特别是针对目标检测任务的算法,如YOLO(You Only Look Once)。 一、表面缺陷检测的重要性: 在钢铁制造过程中,表面缺陷可能会影响材料的性能和寿命,甚至导致结构的失效。因此,及时、准确地检测出这些缺陷至关重要。传统的检测方法依赖于人工视觉检查,成本高且易受主观因素影响。随着机器学习和深度学习技术的进步,自动化检测已成为解决这一问题的有效途径。 二、深度学习在表面缺陷检测中的应用: 1. YOLO(You Only Look Once):YOLO是一种实时的目标检测系统,以其快速的检测速度和相对较高的准确性而受到广泛关注。在NEU-DET数据集中,YOLO可以被训练来识别并定位钢材表面的缺陷,如裂纹、锈斑、凹痕等。 2. 特征提取:深度学习模型,如卷积神经网络(CNN),能自动从图像中学习高级特征,这对于识别复杂的表面缺

    基于java的微信小程序健身房私教预约系统答辩PPT.pptx

    基于java的微信小程序健身房私教预约系统答辩PPT.pptx

    astropy-5.0.4-cp310-cp310-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    基于java的微信小程序中国剪纸微信小程序的设计与实现答辩PPT.pptx

    基于java的微信小程序中国剪纸微信小程序的设计与实现答辩PPT.pptx

    VB程序实例-保存窗口设置.zip

    基于VB的程序实例,可供参考学习使用

    基于java的微信小程序微信平台签到系统的设计与实现答辩PPT.pptx

    基于java的微信小程序微信平台签到系统的设计与实现答辩PPT.pptx

    astropy-4.2-cp36-cp36m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    aggdraw-1.3.14-cp38-cp38-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

    兔兔答题源码 在线答题神器 一款前后端开源的移动端答题系统.zip

    依赖包安装 由于node的包非常大,所以提供源代码的时候就不提供第三方的依赖包,需要自己安装。在项目目录下执行npm i即可安装。 1、PHP的版本必须在8.2x,至于更高的版本,例如8.3x版本以及更高,系统还未完全测试过,生产环境不建议直接使用。 2、MySQL的版本必须是>= 5.7.x的版本,低于5.7.0的版本100%是无法使用的。 3、Redis的版本没有过多的要求,不过推荐使用7.0以及更高的版本。 4、管理端使用的Vue3的版本开发,同时使用了Element Plus的版本, 所以需要使用Node.js的版本推荐是>= 16.x的版本。同时推荐生产环境,编译打包成静态文件运行。 安装教程: 域名配置,打开utils目录下的request.js文件,按照文件说明配置实际的API地址。 App.vue里面的examUpdateTemplateId改成自己的微信小程序订阅模板id。 代码中有涉及到开发者的二维码图片,根据不同的地方替换成自己即可。 小程序配置,找到manifest.json文件,将下面的appid改成你自己的小程序appid。 “mp-we

    JSP基于SSM小区物业管理系统毕业源码案例设计.zip

    JSP基于SSM小区物业管理系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    VB程序实例-程序菜单的隐藏&显示.zip

    基于VB的程序实例,可供参考学习使用

    基于Java实现的黄金矿工小游戏.zip

    本资源是一个基于Java实现的黄金矿工小游戏项目,旨在帮助初学者通过实践巩固Java编程知识。游戏包含多个功能模块,如窗口绘制、图片绘制、红线摇摆及抓取判定等,并采用双缓存技术解决画面闪动问题。此外,还实现了金块和石块的随机生成与抓取机制、积分设置、关卡设置以及商店购物等功能。本项目适合刚入门或有一定基础的Java学习者,通过完成这个项目,可以提升面向对象编程的理解和应用能力,同时增强对Java基础知识的掌握。

    盒子模型及盒子布局中的

    清除默认样式

    基于java的社区文化宣传网站答辩PPT.pptx

    基于java的社区文化宣传网站答辩PPT.pptx

    Trustwave DbProtect:高级查询与自定义报告技术教程.docx

    Trustwave DbProtect:高级查询与自定义报告技术教程.docx

    原版apsw-3.46.1.0-cp312-cp312-win_arm64.whl-下载即用直接pip安装.zip

    安装前的准备 1、安装Python:确保你的计算机上已经安装了Python。你可以在命令行中输入python --version或python3 --version来检查是否已安装以及安装的版本。 个人建议:在anaconda中自建不同python版本的环境,方法如下(其他版本照葫芦画瓢): 比如创建python3.8环境,anaconda命令终端输入:conda create -n py38 python==3.8 2、安装pip:pip是Python的包管理工具,用于安装和管理Python包。你可以通过输入pip --version或pip3 --version来检查pip是否已安装。 安装WHL安装包 1、打开命令行(或打开anaconda命令行终端): 在Windows上,你可以搜索“cmd”或“命令提示符”并打开它。 在macOS或Linux上,你可以打开“终端”。 2、cd到whl文件所在目录安装: 使用cd命令导航到你下载的whl文件所在的文件夹。 终端输入:pip install xxx.whl安装即可(xxx.whl指的是csdn下载解压出来的whl) 3、等待安装完成: 命令行会显示安装进度,并在安装完成后返回提示符。 以上是简单安装介绍,小白也能会,简单好用,从此再也不怕下载安装超时问题。 使用过程遇到问题可以私信,我可以帮你解决! 收起

    使用Java开发的一个小的飞机大战游戏.zip

    资源简介本资源是一个使用Java语言开发的小型飞机大战游戏,旨在为学习者提供一个完整的游戏开发案例。项目包含全部源代码及相关资源文件,适合初学者和有经验的开发者学习和参考。通过本项目,学习者可以深入了解Java编程、面向对象设计、图形渲染及事件处理等核心概念,并掌握游戏开发的基本技巧。该项目涵盖了从游戏设计到实现的全过程,包括游戏窗口创建、游戏元素(如飞机、子弹、敌机)的设计、碰撞检测、计分系统以及用户交互等功能。通过分析和研究这些代码,学习者不仅可以提升编程技能,还能理解游戏开发的基本原理和流程。总之,这个基于Java的飞机大战游戏项目是一个宝贵的学习资源,能够帮助学习者在实践中掌握Java编程和游戏开发的核心知识。

Global site tag (gtag.js) - Google Analytics