【步步为营 Entity Framework+Reporting service开发】-(4) 使用vs2008 开发一个最基本的Trend chart

来源:互联网 时间:1970-01-01

有些朋友要问,为什么要用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个点。那再加条数据:

25 2012-06-27 00:00:00.0002003002802201000trendTrue46 2012-07-11 00:00:00.0002503302802201000trendTrue57 2012-07-18 00:00:00.0002002005001001000trendTrue78 2012-07-25 00:00:00.0002603402002001000trendTrue

看起来还是很粗糙的一个报表。连个名字都没有。线能不能粗点?能不能做成3D的?我能不能只看最近1个月的报表(filter)

每个点的值都是多少,能不能显示百分比。开始提到的酷酷的drill down呢?

下一章会介绍 针对这个trend 报表的进阶内容。

 

 


相关阅读:
Top