【步步为营 Entity Framework+Reporting service开发】-(4) 使用vs2008 开发一个最基本的Trend chart
有些朋友要问,为什么要用vs2008 而不用vs2010.
因为我们使用的是sql2008R2,默认在vs2008里可以创建report 项目。如果使用sql 2012的话,在vs2010中或许也会带吧。(vs 2010中我们可以使用report reviewer,道理是一样的)
不过使用vs创建的report 只是把db里的数据组织好格式展示一下。真正对report 的管理还是要在安装reporting service 的那台服务器上。
要展现一张报表给用户看,需要如下过程:
1.使用vs创建相关报表。
2.部署到指定的report 服务器上。
3.配置报表服务器。
【创建报表】
这里我们先来讲如何使用vs创建报表吧。
打开vs2008
文件-》新建-》商业智能项目-》报表服务器项目
把默认名字改成reporting。
我们需要生成trend ,bar和detail 报表。我们一个一个来。先创建trend chart。
解决方案管理器中在reporting 项目上右键-》添加-》新建项-》报表-》改名为trend.rdl。
首先我们要添加数据源,也就是告诉vs,我们的数据来源是哪,根据什么数据生成报表?
按下图操作:报表数据-》数据源-》添加数据源
命名数据源TrendDatasource
点击编辑,连接字符串:服务器名是. ,因为我是创建在本地,如果是远程机器直接写那台机器的名称。
***注意,验证方式要用sql server 身份验证。因为数据库里没必要给每个用户都加访问的权限。那样不安全,也很麻烦。至于身份验证的工作交给reporting service 管理。后边的章节会介绍。
建议为reporting service 创建一个单独的账户。例如reportuser。我们来一起创建下。已经创建好或者希望用已有账户的请略过此块:
连接数据库-》安全性-》登录名-》右键-》新建登录名=》
常规:sqlserver 身份验证=》键入密码=》不勾选“强制实施密码策略”
服务器角色:都勾上吧。
用户映射:选择我们上一章code first 创建的db :DemoReportDB。下边的数据库角色成员身份,都勾上。
状态:一定确认: 授权和启用都被勾选上。
好了,我们现在切换到vs中,使用刚才创建的sql用户连接字符串。注意要点选记住密码哦。
数据库选择我们刚才的DemoReportDB数据库。
点击一下测试连接。有的用户提示reportuser登陆失败。为什么呢?是因为你在安装sql时候没指定开启sql身份验证登陆模式。
好了,现在连接好字符串了。我们的数据源也有了(名字是自己设定的,我设定为TrendDataSource),接着创建数据集。
名称:TrendDateset。选择使用在我报表中嵌入的数据集。数据源从下拉列表中选择我们刚才创建的TrendDataSource。
点击查询分析器:添加表,如下图,
选择 trends表。
勾选表上的字段或键入语句:SELECT TaskID, TaskName, Time, B1Better, Equal, B2Better, UnCertain, GrandTotal
FROM Trends
有朋友要问了,不是还要按时间过滤,drill down。就这一句sql?别急,我们一步一步来。
点击确定。这时候我们有了数据集和数据源了。
【绑定字段】
在trend.rdl 设计选项卡中右键-》插入-》图表-》折线图-》有标记的折线图。根据需要调整图的大小。
点击一下图表。右边会弹出来一个“图表数据框”
点右上角的+,按下图加入3个字段。
点选“类别组”右边的+,添加time 到类别组。因为我们要根据time来分组。每个日期对应着trend的一个时间点。
这时候我们先切换到预览选项卡上。看看我们的报表是什么样啦?点选“预览”
报表是有了,但是好奇怪啊,不是折线图,而是3个点。为什么呢?因为我们开始只导入了一条数据呀。
由于使用EF导入数据在前边已经介绍过了。我们这次手动改数据库吧。找到trends table ,右键-》编辑前200行-》
taskid :6 time:2012-07-11 B1Better:250 Equal: 350 B2Better:230 Uncertain:220 GrandTotal:1000 type:trend IsActive:true
这时候再预览看看我们的报表?哇塞,有了,可惜还是2个点。那再加条数据:
2 | 5 | 2012-06-27 00:00:00.000 | 200 | 300 | 280 | 220 | 1000 | trend | True | |
4 | 6 | 2012-07-11 00:00:00.000 | 250 | 330 | 280 | 220 | 1000 | trend | True | |
5 | 7 | 2012-07-18 00:00:00.000 | 200 | 200 | 500 | 100 | 1000 | trend | True | |
7 | 8 | 2012-07-25 00:00:00.000 | 260 | 340 | 200 | 200 | 1000 | trend | True |
看起来还是很粗糙的一个报表。连个名字都没有。线能不能粗点?能不能做成3D的?我能不能只看最近1个月的报表(filter)
每个点的值都是多少,能不能显示百分比。开始提到的酷酷的drill down呢?
下一章会介绍 针对这个trend 报表的进阶内容。