自定义报表是指用代码构造报表,用于复杂的数据处理报表。制作这种报表需要用户有一定开发能力。有了此方法,再复杂的统计报表也可以制作出来了。
具体方法是开发者开发一个页面(自定义页面开发在《系统扩展开发指南》等多篇文章中讲到,这里不再重复)进行数据处理,然后将处理后的结果集传入平台的自定义报表输出页面(common\datam198.aspx),平台common\datam198.aspx页提供了自定义报表的接入方案,开发者只需将自己的数据构造成一个DataTable,然后通过Session("gQueryDataTable")传过去即可了。
datam198.aspx页需要以下四个Session:
Session("gQueryDataTable"):数据表,必须有
Session("gQueryTableName"):相关表名,必须有
Session("gQueryTitle"):报表标题,必须有
Session("gQueryBackURL"):返回页面URL,即在报表上加一个返回按钮,返回到指定页,这个可以不要。
以下例程简单说明了开发方法:
后台代码(C#):
DataTable objTable = new DataTable("myDataTable");
objTable.Columns.Add("部门", typeof(string));
objTable.Columns.Add("供应商", typeof(string));
objTable.Columns.Add("入库金额", typeof(decimal));
objTable.Columns.Add("赠品金额", typeof(decimal));
DataRow drw = default(DataRow);
//加入每行数据(具体数据可以根据代码及计算后写入,循环填入行中)
drw = objTable.NewRow();
drw("部门") = "长沙店";
drw("供应商") = "天河食品公司";
drw("入库金额") = 1000;
drw("赠品金额") = 10;
objTable.Rows.Add(drw);
………..
Session("gQueryDataTable") =
objTable;
Session("gQueryTableName") = "TableName";//填入相关主要表名
Session("gQueryTitle") = "采购报表";
this.Response.Redirect("~/common/datam198.aspx");//指向报表输出页面,这个路径可以根据你自定义的页面存放位置调整
后台代码(VB.NET):
Dim objTable As DataTable = New DataTable("myDataTable")
objTable.Columns.Add("部门", GetType(String))
objTable.Columns.Add("供应商", GetType(String))
objTable.Columns.Add("入库金额", GetType(Decimal))
objTable.Columns.Add("赠品金额", GetType(Decimal))
Dim drw As DataRow
‘加入每行数据(具体数据可以根据代码及计算后写入,循环填入行中)
drw =
objTable.NewRow()
drw("部门") = "长沙店"
drw("供应商") = "天河食品公司"
drw("入库金额") =1000
drw("赠品金额") = 10
objTable.Rows.Add(drw)
………
Session("gQueryDataTable")= objTable
Session("gQueryTableName") = "TableName"
’填入相关主要表名
Session("gQueryTitle")="采购报表"
Me.Response.Redirect("~/common/datam198.aspx") ’指向报表输出页面,这个路径可以根据你自定义的页面存放位置调整
举例:
这是一个项目管理系统一个统计报表,根据用户所需要的条件查相应项目信息统计表。
自定义开发了一个让用户输入查询条件的界面,在此界面中做开发,将各个相关表的数据根据相应计算公式进行计算后,写入到一个DataTable中,然后利用~/common/datam198.aspx页输出报表,界面如下:
输入相应的条件以后,点击开始查询按钮进入如下界面: