博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
玩转SSRS第五篇---客户端报表
阅读量:7052 次
发布时间:2019-06-28

本文共 1596 字,大约阅读时间需要 5 分钟。

有些时候,你需要在程序中使用报表的功能,但是又不想去部署和维护一台报表服务器。这个时候你可以考虑使用客户端报表。

客户端报表与前面提到的SSRS报表略有不同,SSRS报表是需要部署在报表服务的实例中以供其它平台使用,而客户端报表不需要报表服务实例,它直接在相应的webform或者 winform程序中解析运行。

打开上一篇所创建的项目,右键单击项目名称选择Add->New Item…,创建另外一个asp.net页面。后续的客户端报表我们将host到这个页面中。

首先添加一个客户端报表到项目中,同样在右键项目名称选择Add->New Item…,左侧选择 Reporting,右边选择Report。

选择一个名称然后点击Add。可以看到客户端报表的设计界面,跟SQL Server 2012的服务器端报表设计界面类似,但是少了预览。

同样先为报表添加数据源,右键Report Data下的Datasets选择Add Dataset…。

客户端报表添加数据集的方式跟服务器报表的很不同。

在数据源配置工具界面中点击New Connection…。

服务器名称选择本地,数据库选择AdventureWorksDW2012。

Adventure Works是微软的示例数据库,关于如何获取并且部署这个数据库可以参考我的这篇随笔:

点 OK完成连接设置后,回到数据源配置向导界面,可以看到刚才配置的数据库连接字符串信息。

点击下一步之后,会提示将连接字符串进行保存,这里指定的是asp.net中的web.config文件中的连接字符串名称。

点击下一步,选择FactInternetSales表。然后点完成。

回到数据集属性,可以看到数据集当中的字段列表。

点OK完成数据集的创建。接下来数据集的结构可以看到跟服务器端报表没有太大区别。

接下来按照服务器端报表的操作方式,先拖拽一个Table控件到报表设计界面上,然后依次拖拽需要的字段都Table控件中,如下图。

到这里一个客户端报表就创建完成了。接下来需要将其承载到一个带有reportviewer控件的asp.net页面中。

 

回到前面创建的asp.net页面,拖拽一个reportviewer控件到页面中,然后在设计界面中点击ReportViewer右边向右的箭头,在ReportViewer Tasks里选择刚才建立的报表。

切换到Source视图,可以看到系统自动生成的标签。

这里需要手动修改一下,把ReportEmbeddedResource里的设置更换成ReportPath="Report1.rdlc"。

Choose Report之后系统会自动为报表建立一个ObjectDataSource实例,这个实例是要传递给ReportViewer的。

不过这里还是需要手动做一个设置,否则在VS2012下会出现错误。

点击ObjectDataSource向右的箭头,点击Configure Data Source…配置数据源。

点击下拉列表,选择第二个。

到这里直接点完成。

运行项目,可以看到客户端报表的显示结果。

 

 

以上,简单建立客户端报表的过程简单介绍到这里。RDLC在asp.net下的使用方法从VS2008到2010再到2012都有细节上的变化,总体感觉后面的版本更复杂一些,如本文所描述。

此篇主要是介绍通过Dataset的方法作为客户端报表的数据源,下一篇将介绍如何通过代码的方式为客户端报表提供数据源从而使客户端报表获取数据的方式更加灵活。

 

 

BTW: Visual Studio 2012中,如果直接按照以前版本的套路直接在Choose Report里选择已经建立好的报表,会有一些问题。

比如在Choose Data Source之后选择报表附带的Dataset ,会导致Visual Studio 2012"闪退"。

 

 

转载地址:http://bqsol.baihongyu.com/

你可能感兴趣的文章
手把手教你写一个 VSCode 插件
查看>>
cookie和session
查看>>
使用 multipart/x-mixed-replace 实现 http 实时视频流
查看>>
史上最牛内推小组(持续更新)
查看>>
现实中的路由规则,可能比你想象中复杂的多
查看>>
nginx配置gzip中的坑
查看>>
Javascript中的函数声明与函数表达式
查看>>
Python学习笔记 - queue
查看>>
茶器漫谈 高逼格 or 真内涵?
查看>>
HTML5学习之Web Storage基础知识
查看>>
tab切换
查看>>
垃圾回收及内存调试工具的介绍
查看>>
你的接口,真的能承受高并发吗?
查看>>
自定义View实用小技巧
查看>>
iOS CALayer anchorPoint 的应用场景
查看>>
如何變聰明?訓練自己變成結構化思維型的人!- TechMoon 科技月球
查看>>
超好用的VueJs调试工具——vue-devtools
查看>>
到底怎么才算“懂”python的twisted框架?
查看>>
Flutter 基础布局Widgets之Expanded详解
查看>>
spring cloud微服务分布式云架构- Eureka服务器搭建及配置
查看>>