当你的系统需要提供报表功能时,你该怎么选择呢?手写Sql语句?加入Sql语句很难实现呢?手写Mdx?也许对于开发人员,手写Sql语句还可以接受,但是若是让你使用Mdx,那估计你就要崩溃了。起码也得花段时间学习一下BI的基本知识吧。
在此,推荐你使用专业的报表服务,比如微软的Sql Server reporting Service。在你的项目中进行简单的调用即可。这里,我们使用最新的ASP.Net Mvc3 Razor +Sql Server Reporting Service为你演示
在动手之前,先搞清楚一件事情
你使用Sql Server Reporting Service版本号?
A:若是使用Report Server Project,(即你使用VS不同版本新建--》BI Project--》Report Server Project),将创建的是不同版本的Reporting Service
一般情况下,Vs2008创建的Report Server Project项目版本号是是9.0.0.0,
Vs2005创建的Report Server Project项目版本号是是8.0.0.0,
你问我VS2010,Vs2010的BIDS貌似还没有发布。
B:在项目中直接使用ReportView控件:如下图,不同VS工具箱中ReportView的版本号不同,
VS2010工具箱中的控件是10.0.0.0,
VS2008工具箱中的控件是9.0.0.0,
VS2005工具箱中的控件是8.0.0.0,
现在可以开始动手了,
首先:建立ASP.NET MVC 3 项目,选择模板引擎为Razor,具体省略。。。。
其次:我们使用VS2008创建Report Server Project,操作步骤:打开VS-新建--选中BIProject分类中的ReportServer Project,详见第一幅图,并部署。部署后,你可以通过http://localhost/Reports或者http://localhost/ReportServer中看到(若是你使用WIn7或Vista等具有UAC的系统,需要禁用UAC,目前没发现其他比较容易解决的方法,如有谁知道,麻烦通知我)
再次:在ASP.NET MVC 3中,调用ReportServer Project。
1、添加ReportController,添加后发现有Default Action "Index".
2、添加“Index” View,视图模板引擎这里选择“ASPX(C#)”
3、打开Report/Index.aspx,切换到设计 试图,拖动ReportView控件到设计视图上,此时VS会自动做以下几件事情:
A:添加“Microsoft.ReportViewer.WebForms.dll”引用
B:在Web.COnfig中添加以下节点
C:在该页面添加
4、修改 添加红色部分
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%">
</rsweb:ReportViewer>
</form>
5、调试,此时会发现出现以下错误,按照提示,在Web.config中system.web/httpHandlers 节点下添加以下节点
6、再次调试,显示不出来数据
你会发现明明在http://loalhost/reports/该报表可以查出数据,但是在此处调用后,根本显示不出来数据
7、修改版本号
显示不出来数据时别急,还记得我们之前说的Report Server Project的版本么?回忆一下,我们通过VS2008 创建ReportServer Project,也就是说版本号是9.0.0.0,但是,我们调用的时候,全部使用的10.0.0.0,改过来试试。ok,数据回来了,此处切记切记。