在VS2005中,选择 Report Server project模板新建工程BARreports
1 设置工程属性:
Target Server URL = http://ctc-bar:81/ReportServer (开始以为是report manager的地址,设为http://ctc-bar:81/reports,结果总是提示连不上报表服务器,这里要用report server的地址)
设置完成后,从右键菜单选择部署,如果不属成功,说明设置正确。
工程创建后,会先创建两个目录:Shared Data Sources和Reports
2 定义数据源
先在Shared Data Sources中增加一个数据源BARtestDB
connect string中要指定数据库连接,身份认证最好用数据库用户。
定义完成后,把BARtestDB发布到服务器上。打开报表服务器http://ctc-bar:81/reports你会发现新增加的目录Shared Data Sources,里面有一个数据源定义文件BARtestDB.rds。
3 设计报表
新建报表是通过Wizard方式完成的。
第一步选择数据源,就选择刚刚建立的BARtestDB
第二步数据获取,在query string中输入SQL 命令。
第三步选择报表的类型
选择Matrix类型
Table型就是标准形式,直接将SQL结果按照数据表方式显示出来。还不如用GridView绑定DATASET方便呢。
matrix型比较有用,列是根据数据动态产生的,这也是我使用SQL reporting的原因。
例如:数据
StudentID Name Subject Grade
1 张三 语文 80
1 张三 数学 86
2 李四 英语 90
2 李四 数学 92
报表结果
StudentID Name 语文 数学 英语
1 张三 80 86 null
2 李四 null 92 90
虽然我们自己用SQL语句也可以做成这样的DATASET,但会非常麻烦,也很难维护。
第四步,定义报表
查询结果列可以有四类不同的映射
Page:每页的标题
Rows:是每行都出现的数据列如StudentID和Name ,相当于table类型报表的列。
Columns:是最重要的要按照数据动态分列的,在这里就是Subject
Details: 是和Columns对应的数据,在这里是Grade
问题:
matrix报表无法得到表头。 也无法作total的计算。
我的办法是在数据查询时计算total。但是表头还是没有办法。