`
ZhengMingwei
  • 浏览: 134850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个多重参数报表的制作

阅读更多

需求背景

在参数输入界面(如图示)

1、 选择需要在最终统计表中显示的字段;

2、 选择需要汇总的城市;

3、 选择汇总方式

分析

需求中动态显示字段的实现可以通过隐藏列的方式实现,如果显示数据量比较大的时候可以考虑宏的方式实现,在这里采用隐藏列的方法。

由于汇总城市的选择是单选的,因此采用报表提供的单选按钮完成。

汇总方式可以通过参数控制行隐藏实现。
详细步骤

制作参数报表

1、选择字段

2、汇总城市

参考选择字段的方式,设置填报属性

3、 汇总方式

下图中两个单元格类型设置为HTML

制作主表

接下来进行主表的主要部分设计

其中:

处为设置该列的隐藏属性,在隐藏列中输入表达式:if(like(@cols,”*1*”),false,true)。请注意此处的写法。由于cols参数传递过来的是类似”1,2,3,4“这样的串,所以此处采用上述表达式控制。

另外,CFI列的表达式分别为:if(like(@cols,”*2*”),false,true)if(like(@cols,”*3*”),false,true)if(like(@cols,”*4*”),false,true)

处表达式为:if(@sumType==”1″,”北京小计:“,@sumType==”2″,”上海小计:“,”小计:“)

处设置隐藏行,以区别不同的汇总方式。在隐藏行中设置表达式:if(@flag==”1″,true,false)

JSP文件

下面是发布该报表的jsp中的部分关键代码

request.setCharacterEncoding( “GBK” );
String report = request.getParameter( “raq” );
String reportFileHome=Context.getInitCtx().getMainDir();
StringBuffer param=new StringBuffer();
String flag = request.getParameter(”flag”);
//保证报表名称的完整性
int iTmp = 0;
if( (iTmp = report.lastIndexOf(”.raq”)) <= 0 ){
report = report + “.raq”;
iTmp = 0;
}

Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);
if(paramValue!=null){
//把参数拼成name=value;name2=value2;…..的形式
param.append(paramName).append(”=”).append(paramValue).append(”;”);
}
}
}

<script language=”javascript”>
function sumCode(flag){
//alert(”调用成功!”);
var cols = document.getElementById(”report1_C2″).value;
alert(”选择字段=====”+cols);
var sumType = document.getElementById(”report1_C4″).value;
alert(”汇总方式====”+sumType);
var url=”showReport.jsp?raq=/helishiDemo.raq&flag=”+flag;
url = url+”&cols=”+cols;
url = url+”&sumType=”+sumType;
window.open(url);
}
</script>

总结

使用报表参数的传递,以及各种隐藏方式的运用,可以实现诸多需求的报表。当然,这些都是在不断使用并熟悉报表工具的基础上进行的。

分享到:
评论

相关推荐

    如何制作多重参数报表

    在报表的制作中,有时候我们需要多重参数的传送,在参数输入的界面,我们可能需要多选的下拉列表,可能需要单选的按钮。同时我们可能会希望做成阶段性触发的界面,这样对需要多次过滤结果是很方便的。看完本文之后就...

    在Style Report中制作主从分级报表

    在报表的制作中,有时候我们需要多重参数的传送,在参数输入的界面,我们可能需要多选的下拉列表,可能需要单选的按钮。同时我们可能会希望做成阶段性触发的界面,这样对需要多次过滤结果是很方便的。学习了本文你就...

    QReportMaker报表生成打印控件包 &lt;img src=&quot;/images/sunny.gif&quot;

    QReportMaker是一个自动生成QuickRep报表的VCL控件包,适用于数据表打印、表单、票据打印、文档打印及自绘的报表打印,包含TQMPrintDataSet、TQMPrintEhGrid、TQMPrintDBGrid、TQMPrintStringGrid、TQMPrintControl...

    第一部分 界面设计

    实例202 如何在一个数据集中浏览另一个数据集的数据 实例203 如何在数据库更新过程中增加事务操作 实例204 如何在程序中实现查找字段 实例205 如何在程序中实现自定义字段 实例206 如何使用字段拖放功能 实例...

    C++Builder精彩编程实例集锦的源代码前3部分.rar

    实例202 如何在一个数据集中浏览另一个数据集的数据 实例203 如何在数据库更新过程中增加事务操作 实例204 如何在程序中实现查找字段 实例205 如何在程序中实现自定义字段 实例206 如何使用字段拖放功能 实例...

    C++Builder精彩编程实例集锦的源代码后3部分.rar

    实例202 如何在一个数据集中浏览另一个数据集的数据 实例203 如何在数据库更新过程中增加事务操作 实例204 如何在程序中实现查找字段 实例205 如何在程序中实现自定义字段 实例206 如何使用字段拖放功能 实例...

    Access2003中文版应用基础教程part2

    第7章 制作与打印独一无二的报表 7-1 建立报表的方法 7-1-1 报表的页面布局方式 7-1-2 自动产生纵栏式与表格式报表 7-1-3 用报表向导产生报表 7-1-4 报表的分组级别与数据统计 7-2 报表的编辑技巧 7-2-1 报表...

    Access2003中文版应用基础教程part1

    第7章 制作与打印独一无二的报表 7-1 建立报表的方法 7-1-1 报表的页面布局方式 7-1-2 自动产生纵栏式与表格式报表 7-1-3 用报表向导产生报表 7-1-4 报表的分组级别与数据统计 7-2 报表的编辑技巧 7-2-1 报表...

    asp.net知识库

    制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui...

    C++Builder精彩编程实例集锦的源代码(4,5,6部分).rar

    实例202 如何在一个数据集中浏览另一个数据集的数据 实例203 如何在数据库更新过程中增加事务操作 实例204 如何在程序中实现查找字段 实例205 如何在程序中实现自定义字段 实例206 如何使用字段拖放功能 实例...

    windowsnt 技术内幕

    制作一张网络客户安装启动磁盘 制作安装磁盘组 基于客户的网络管理工具 Windows NT Workstation的网络管理工具 在一个Windows NT Workstation上安装管理工具的系统要求 Windows 95的网络管理工具 在Windows 95上安装...

    Excel VBA实用技巧大全 附书源码

    01015获取在Excel主窗口中一个窗口所能占有的最大高度和宽度 01016获取当前打印机名称 01017获取MicrosoftExcel剩余内存 01018获取MicrosoftExcel的总内存 01019获取计算机被Excel占用的内存 01020改变Excel窗口大小...

    Visual C++ 数据库系统开发完全手册.part2

    3.3.3 多重继承 3.3.4 虚基类 3.4 多态性与虚函数 3.5 抽象类与纯虚函数 3.6 C++模板 3.6.1 函数模板 3.6.2 类模板 第4章 创建应用程序 4.1 应用程序向导 4.1.1 Visual C++ 6.0中的向导类型 4.1.2 Visual C++ 6.0中...

    Visual C++ 数据库系统开发完全手册.part1

    3.3.3 多重继承 3.3.4 虚基类 3.4 多态性与虚函数 3.5 抽象类与纯虚函数 3.6 C++模板 3.6.1 函数模板 3.6.2 类模板 第4章 创建应用程序 4.1 应用程序向导 4.1.1 Visual C++ 6.0中的向导类型 4.1.2 Visual C++ 6.0中...

    C语言通用范例开发金典.part2.rar

    1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 ...

    C语言通用范例开发金典.part1.rar

    1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 ...

    C 开发金典

    1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示杨辉三角 7 ...

Global site tag (gtag.js) - Google Analytics