2)之后,在解决方案资源管理器中,鼠标右键点选共享数据源,选择"添加新数据源",再选择SQL server服务器所在的位置,并选择使用Northwind数据库,按确定,这样,将建立一个新的共享数据源northwind.rds(当然,可以为该数据源改名),创建共享数据源的目的是为了在今后的报表设计中方便地引用该数据连接。
3)在"解决方案资源管理器"中右键单击"报表",指向"添加",然后单击"添加新项"。 在"添加新项"中,单击"报表"。 在"名称"框中,键入"report1.rdl",然后单击"打开"。将打开一个视图,其中包含"数据"、"布局"和"预览"选项卡。如下图所示:
4)为了能让报表和数据库连接,必须新建一个数据集。在顶部的"数据集"下拉列表框中,,点选该下拉列表框,选择"新建数据集",此时将显示"数据集"对话框,由于之前我们已经建立了共享数据源,因此,在弹出的窗口中,我们看到已经存在的数据源northwind,也可以对该数据集重新命名,这里我们保持数据集的名dataset1不变,同时看到,可以选择要查询的命令类型是文本还是存储过程,可以在下面的查询字符串中输入SQL语句或者存贮过程。这里我们不做选择,直接按确定,如下图:
5)之后,会出现下图的数据设计窗口,我们可以直接输入sql 查询语句:select * from orders,之后按!号按钮,执行该sql 语句。则可以马上看到查询的结果,再按保存,保存该数据集。
6)再切换到布局视图,在这里,我们可以看到在左边的面版中,有工具选项面版和字段选择面版。在工具面版中,有各种制作报表的常用工具,如画线,图象,文本框对象等,在字段面版中,列出了当前数据集下的各字段。在中间的布局区域,可以看到中间的矩形区域就是绘制报表的地方,在这个例子中,我们只需要将字段面版中的几个字段,如orderid,customerid,orderdate,拖拉到设计区域矩形框的第二行(第一行是表头,第三行是表尾),并将表头改成适当的文字,如下图:
7)此时,我们已经完成了报表的简单设计,可以点选预览报表了。注意,如果你的SQL server选择的是SQL server登陆验证的话,必须先选择共享数据源,然后在凭据中输入登陆SQL server的用户名和密码就可以了。点选预览按钮后,会看到报表的效果,如下图:
8)接下来,我们要部署我们的报表。首先点选项目reportservice的属性页,在出现的配置管理器的targerserverurl中输入要部署的报表的服务器,这里填写http://localhost/reportserver,因为在reporting service中,默认安装的报表服务器是安装在reportserver虚拟目录下,之后,右键点选reportsevice项目,选择"部署",系统将自动部署该报表服务。如图:
9)最后,打开IE浏览器,输入http://localhost/reportserver,就会看到已经部署在该报表服务器上的报表。注意的是,我们可以在导出格式的下拉表中选择将报表导出到pdf,excel,txt等不同格式的文件,大家可以试一下。
Reporting service的出现,无疑给开发人员在制作报表时多了一份选择,其中还有不少技巧和相关知识,本文仅是抛砖引玉,更多的请参考reporting service的联机丛书
访问调用报表页面:
在你的ASP.NET工程中,新建一个web page,加入一个ReportView控件ReportViewer1。
修改ReportServerUrl和ReportPath两个属性:
ReportServerUrl=http://ctc-bar:81/reportserver(ctc-bar是你的报表服务器的名字,我这里因为使用的是端口81,所以加上了:81)
ReportPath=/Barreports/EBCdetaillist (/Barreports/EBCdetaillist是你的报表所在路径,注意最前面的/)
现在,你已经可以使用这个报表了。运行你的程序,在ReportView的位置出现了报表,和从URL访问一抹一样。
现在,我要对报表的输入参数作些工作,我的报表里有两个时间参数,开始时间和结束时间。如果直接在文本输入框输入2007-1-1,非常不方便。我希望从web page上加一个日期选择的控件来代替直接输入日期。
这需要两步:
1 将ShowParameterPrompts设置为false. 即关闭报表服务器提供的参数输入区域。
2 在web page上增加START DATE和END DATE两个日期控件,和一个VIREW REPORT的按钮。
在VIREW REPORT按钮的CLICK事件中,将日期控件的值用SetParameters方法传递给服务器。类似于
protected void ButtonViewReport_Click(object sender, EventArgs e)
{
DateTime StartDate = System.Convert.ToDateTime(TextBoxStartDate.Value);
DateTime EndDate = System.Convert.ToDateTime(TextBoxEndDate.Value);
ReportParameter[] Parameters = new ReportParameter[2];
Parameters[0] = new ReportParameter("startdate", StartDate.ToShortDateString());
Parameters[1] = new ReportParameter("enddate", EndDate.ToShortDateString());
ReportViewer1.ServerReport.SetParameters(Parameters);
}