通常实现报表的方式有几种:一种是我们自己做一个报表工具,来实现一些相对比较简单的报表;另一种是找开源的报表工具,自己再改改,来实现报表;还有一种是用像Reporting Services,水晶报表等知名报表.我相信大部分的系统都会选择最后一种实现方式.
Reporting Services和水晶报表都用过一段时间,个人感觉还是比较喜欢Reporting Services,喜欢的理由有几点:第一它符合SOA架构,系统耦合度不高;第二安装布署方便,SQL Server 2005中已经在安装包中自带了;第三符合我们的开发习惯.
最近在E8.Net工作流开发架构上刚做了一些报表,有一些也在使用Reporting Services报表的朋友问我,怎么样调用Reporting Service?
Reporting Services调用有几种方式,第一种是URL方式,第二种是Report View方式.其实实现原理都差不多,只是Report View多了一层封装.
第一种方式URL方式:http://服务器地址/ReportServer/Pages/ReportViewer.aspx?%2f报表目录%2f报表名称&rs:Command=Render
第二种方式:~\Reports\frmReportMain.aspx?ReportName=BYTSListReport&Toolbar=true&Parameters=true
以下是frmReportMain.aspx页面的代码:
/// <summary>
///访问报表方式 0 URL直接访问方式,1 摸拟登录访问方式
/// </summary>
public string VisitReportMode
{
get
{
if (ConfigurationManager.AppSettings["VisitReportMode"] != null)
return ConfigurationManager.AppSettings["VisitReportMode"].ToString();
else
return "0";
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!IsPostBack)
{
this.InitPage();
}
}
/// <summary>
/// 初始化页面
/// </summary>
protected void InitPage()
{
//报表服务器
string reportServer = System.Configuration.ConfigurationSettings.AppSettings["ReportServer"];
string pStrReportPath = System.Configuration.ConfigurationSettings.AppSettings["ReportPath"];
//报表名称
string pReportName = Request["ReportName"].ToString();
//设置参数
SetParam();
rptViewer.ServerUrl = reportServer;
rptViewer.ReportPath = pStrReportPath + pReportName;
if (Request["Toolbar"] != null)
{
if (Request["Toolbar"].ToString().ToLower() == "true")
rptViewer.Toolbar = Microsoft.Samples.ReportingServices.ReportViewer.multiState.True;
else
rptViewer.Toolbar = Microsoft.Samples.ReportingServices.ReportViewer.multiState.False;
}
if (Request["Parameters"] != null)
{
if (Request["Parameters"].ToString().ToLower() == "true")
rptViewer.Parameters = Microsoft.Samples.ReportingServices.ReportViewer.multiState.True;
else
rptViewer.Parameters = Microsoft.Samples.ReportingServices.ReportViewer.multiState.False;
}
}
/// <summary>
/// 设置报表参数
/// </summary>
protected void SetParam()
{
if (Request["ReportParam"] != null)
{
string sReportParam = Request["ReportParam"].ToString();
string sReportParamValue = Request["ReportParamValue"].ToString();
string[] sArrParam = sReportParam.Split(',');
string[] sArrParamValue = sReportParamValue.Split(',');
for (int i = 0; i < sArrParam.Length; i++)
{
rptViewer.SetParameter(sArrParam[i].ToString().Trim(), sArrParamValue[i].ToString().Trim());
}
}
}
E8.Net工作流平台 提升企业战略执行力
ITIL与ITSM QQ群4:58342347
.NET企业应用开发与工作流QQ群:17110384 53284682(已满) 42302450(已满)
http://www.feifanit.com.cn/