最近做了一个润乾报表动态拼接SQL语句的功能,之前做的都是固定SQL传参数的形式。但是项目上有一个特殊需求,一个开发人员没做过,我就帮着就研究了一下,可能写的还不是很完美,但是以实现功能为主,留下来备用。
//开始需要导入润乾用到的包
<%@page import="com.sun.org.apache.bcel.internal.generic.NEW"%>
<%@page import="com.runqian.report4.cache.CacheManager"%>
<%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report"%>
<%@ page import="com.runqian.report4.model.*"%>
<%@ page import="com.runqian.report4.usermodel.*"%>
<%@ page import="com.runqian.report4.util.*"%>
<%
//从请求中取出参数并进行拼接
request.setCharacterEncoding( "GBK" );
String startTime = (String)request.getAttribute("startTime");
String endTime = (String)request.getAttribute("endTime");
String agentId = (String)request.getAttribute("agentId");
String accuseName = (String)request.getAttribute("accuseName");
String accuseType = (String)request.getAttribute("accuseType");
String accuseLevel = (String)request.getAttribute("accuseLevel");
String accuseReasonContent = (String)request.getAttribute("accuseReasonContent");
String accuseReasonContent1 = (String)request.getAttribute("accuseReasonContent1");
String insureChannel = (String)request.getAttribute("insureChannel");
String dealType = (String)request.getAttribute("dealType");
String customerDepId = (String)request.getAttribute("customerDepId");
String accuseMan = (String)request.getAttribute("accuseMan");
String riskName = (String)request.getAttribute("riskName");
String accuseTitle = (String)request.getAttribute("accuseTitle");
String departNo = (String)request.getAttribute("departNo");
String depart = (String)request.getAttribute("depart");
String report = (String)request.getAttribute("reportid");
String ifToLeadership = (String)request.getAttribute("ifToLeadership");
StringBuffer param=new StringBuffer(100);
if(agentId!=null&& !"".equals(agentId)){
param.append("agentId=").append(agentId).append(";");
}
if(startTime!=null && !"".equals(startTime)){
param.append("startTime=").append(startTime).append(";");
}
if(endTime!=null && !"".equals(endTime)){
param.append("endTime=").append(endTime).append(";");
}
if(accuseName!=null && !"".equals(accuseName)){
param.append("accuseName=").append(accuseName).append(";");
}
if(accuseType!=null && !"".equals(accuseType)){
param.append("accuseType=").append(accuseType).append(";");
}
if(accuseLevel!=null && !"".equals(accuseLevel)){
param.append("accuseLevel=").append(accuseLevel).append(";");
}
if(accuseReasonContent1!=null && !"".equals(accuseReasonContent1)){
param.append("accuseReasonContent=").append(accuseReasonContent1).append(";");
}
if(insureChannel!=null && !"".equals(insureChannel)){
param.append("insureChannel=").append(insureChannel).append(";");
}
if(dealType!=null && !"".equals(dealType)){
param.append("dealType=").append(dealType).append(";");
}
if(customerDepId!=null && !"".equals(customerDepId)){
param.append("customerDepId=").append(customerDepId).append(";");
}
if(accuseMan!=null && !"".equals(accuseMan)){
param.append("accuseMan=").append(accuseMan).append(";");
}
if(riskName!=null && !"".equals(riskName)){
param.append("riskName=").append(riskName).append(";");
}
if(accuseTitle!=null && !"".equals(accuseTitle)){
param.append("accuseTitle=").append(accuseTitle).append(";");
}
if(departNo!=null && !"".equals(departNo)){
param.append("departNo=").append(departNo).append(";");
}
if(depart!=null && !"".equals(depart)){
param.append("depart=").append(depart).append(";");
}
if(ifToLeadership!=null && !"".equals(ifToLeadership)){
param.append("ifToLeadership=").append(ifToLeadership).append(";");
}
String path = request.getContextPath();
//加载报表的定义对象
ReportDefine rd = (ReportDefine)ReportUtils.read(application.getRealPath("apps/reportFiles/yd_accuser_query.raq"));
/*修改报表SQL语句开始*/
DataSetMetaData dsmd = rd.getDataSetMetaData(); //获得报表定义中的数据集元对象
SQLDataSetConfig sdsc = (SQLDataSetConfig)
dsmd.getDataSetConfig(0); //取到需要修改的数据集对象
String sql =sdsc.getSQL(); //取得数据集对象中的SQL
//修改sql
if(accuseReasonContent!=null && !"".equals(accuseReasonContent)){
sql = sql + accuseReasonContent ;
}
// sql = sql + accuseReasonContent ;
//System.out.println("报表对象的SQL后:"+sql);
//将修改后的SQL设置到数据集对象中
sdsc.setSQL(sql);
dsmd.setDataSetConfig(0,sdsc);
rd.setDataSetMetaData(dsmd);
/*修改报表SQL语句结束*/
/*修改报表参数语句开始*/
//ParamMetaData paramMetaData = rd.getParamMetaData();
//Param p2 = paramMetaData.getParam(0);
//p2.setValue("0001");
//paramMetaData.setParam(0,p2);
//rd.setParamMetaData(paramMetaData);
//ParamMetaData paramMetaData = new ParamMetaData();
ParamMetaData pmd=new ParamMetaData(); //构造参数元数据
Param param1 = new Param(); //构造参数定义
param1.setParamName("agentId"); //设置参数名
param1.setDataType(Types.DT_STRING); //设置参数数据类型
param1.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(agentId!=null&& !"".equals(agentId)){
param1.setValue(agentId); //设参数缺省值
}
pmd.addParam(param1); //把参数定义添加到参数元数据中
Param param2 = new Param(); //构造参数定义
param2.setParamName("startTime"); //设置参数名
param2.setDataType(Types.DT_STRING); //设置参数数据类型
param2.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(startTime!=null && !"".equals(startTime)){
param2.setValue(startTime); //设参数缺省值
}
pmd.addParam(param2); //把参数定义添加到参数元数据中
Param param3 = new Param(); //构造参数定义
param3.setParamName("endTime"); //设置参数名
param3.setDataType(Types.DT_STRING); //设置参数数据类型
param3.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(endTime!=null && !"".equals(endTime)){
param3.setValue(endTime); //设参数缺省值
}
pmd.addParam(param3); //把参数定义添加到参数元数据中
Param param4 = new Param(); //构造参数定义
param4.setParamName("accuseName"); //设置参数名
param4.setDataType(Types.DT_STRING); //设置参数数据类型
param4.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseName!=null && !"".equals(accuseName)){
param4.setValue(accuseName); //设参数缺省值
}
pmd.addParam(param4); //把参数定义添加到参数元数据中
Param param5 = new Param(); //构造参数定义
param5.setParamName("accuseType"); //设置参数名
param5.setDataType(Types.DT_STRING); //设置参数数据类型
param5.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseType!=null && !"".equals(accuseType)){
param5.setValue(accuseType); //设参数缺省值
}
pmd.addParam(param5); //把参数定义添加到参数元数据中
Param param6 = new Param(); //构造参数定义
param6.setParamName("accuseLevel"); //设置参数名
param6.setDataType(Types.DT_STRING); //设置参数数据类型
param6.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseLevel!=null && !"".equals(accuseLevel)){
param6.setValue(accuseLevel); //设参数缺省值
}
pmd.addParam(param6); //把参数定义添加到参数元数据中
//param.append("accuseReasonContent=").append(accuseReasonContent).append(";");
Param param7 = new Param(); //构造参数定义
param7.setParamName("accuseReasonContent"); //设置参数名
param7.setDataType(Types.DT_STRING); //设置参数数据类型
param7.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseReasonContent1!=null && !"".equals(accuseReasonContent1)){
param7.setValue(accuseReasonContent1); //设参数缺省值
}
pmd.addParam(param7); //把参数定义添加到参数元数据中
Param param8 = new Param(); //构造参数定义
param8.setParamName("insureChannel"); //设置参数名
param8.setDataType(Types.DT_STRING); //设置参数数据类型
param8.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(insureChannel!=null && !"".equals(insureChannel)){
param8.setValue(insureChannel); //设参数缺省值
}
pmd.addParam(param8); //把参数定义添加到参数元数据中
Param param9 = new Param(); //构造参数定义
param9.setParamName("dealType"); //设置参数名
param9.setDataType(Types.DT_STRING); //设置参数数据类型
param9.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(dealType!=null && !"".equals(dealType)){
param9.setValue(dealType); //设参数缺省值
}
pmd.addParam(param9); //把参数定义添加到参数元数据中
Param param10 = new Param(); //构造参数定义
param10.setParamName("customerDepId"); //设置参数名
param10.setDataType(Types.DT_STRING); //设置参数数据类型
param10.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(customerDepId!=null && !"".equals(customerDepId)){
param10.setValue(customerDepId); //设参数缺省值
}
pmd.addParam(param10); //把参数定义添加到参数元数据中
Param param11 = new Param(); //构造参数定义
param11.setParamName("accuseMan"); //设置参数名
param11.setDataType(Types.DT_STRING); //设置参数数据类型
param11.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseMan!=null && !"".equals(accuseMan)){
param11.setValue(accuseMan); //设参数缺省值
}
pmd.addParam(param11); //把参数定义添加到参数元数据中
Param param12 = new Param(); //构造参数定义
param12.setParamName("riskName"); //设置参数名
param12.setDataType(Types.DT_STRING); //设置参数数据类型
param12.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(riskName!=null && !"".equals(riskName)){
param12.setValue(riskName); //设参数缺省值
}
pmd.addParam(param12); //把参数定义添加到参数元数据中
Param param13 = new Param(); //构造参数定义
param13.setParamName("accuseTitle"); //设置参数名
param13.setDataType(Types.DT_STRING); //设置参数数据类型
param13.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(accuseTitle!=null && !"".equals(accuseTitle)){
param13.setValue(accuseTitle); //设参数缺省值
}
pmd.addParam(param13); //把参数定义添加到参数元数据中
Param param14 = new Param(); //构造参数定义
param14.setParamName("departNo"); //设置参数名
param14.setDataType(Types.DT_STRING); //设置参数数据类型
param14.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(departNo!=null && !"".equals(departNo)){
param14.setValue(departNo); //设参数缺省值
}
pmd.addParam(param14); //把参数定义添加到参数元数据中
Param param15 = new Param(); //构造参数定义
param15.setParamName("depart"); //设置参数名
param15.setDataType(Types.DT_STRING); //设置参数数据类型
param15.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(depart!=null && !"".equals(depart)){
param15.setValue(depart); //设参数缺省值
}
pmd.addParam(param15); //把参数定义添加到参数元数据中
Param param16 = new Param(); //构造参数定义
param16.setParamName("ifToLeadership"); //设置参数名
param16.setDataType(Types.DT_STRING); //设置参数数据类型
param16.setParamType(Param.PARAM_NORMAL); //设置参数类型(普通参数或动态参数)
if(ifToLeadership!=null && !"".equals(ifToLeadership)){
param16.setValue(ifToLeadership); //设参数缺省值
}
pmd.addParam(param16); //把参数定义添加到参数元数据中
rd.setParamMetaData(pmd); //把参数元数据赋给ReportDefine
/*修改报表参数语句开始*/
Context ctx = new Context();
ctx.setParamValue("accuseName",accuseName);
Engine engine = new Engine(rd,ctx);
IReport ireport = engine.calc();
request.setAttribute("ireport",ireport);
request.setAttribute("mycontext",ctx);
CacheManager.getInstance().deleteAllReport();//清空所有缓存
%>
//使用标签显示报表对象
<report:html name="report"
srcType="defineBean"
beanName="ireport"
needSaveAsExcel="yes"
needSaveAsPdf="yes"
needPrint="yes"
printLabel="打印"
width="-1"
contextName="mycontext"
params="<%=param.toString()%>"
useCache="no"/>
<%
request.removeAttribute("ireport");
%>
分享到:
相关推荐
可以在Web Services等应用中生成Excel或pdf文件,返回给调用接口的客户端,生成pdf部分出现乱码,需要给类设置字体,时间紧迫,不做修改,请不要介意。
报表部分:查询语句部分,可以sql,可以表关联后自动创建(必须遵循pk_org , pk_group 每个语义模型中必含集团和组织PK) 语义模型(查询语句)-动态建模平台-报表平台-语义模型-集团 自由报表(展示界面)-动态建模...
1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的过滤窗口条件以及条件的参照内容。 4、可设置报表导出到Excel的格式。 5...
│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │...
-列车车次查询.sql │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 ...
万能报表工具提供了 K/3 系统中的表结构,通过向导自动生成 SQL 语句,作为数据来源,能够灵活 设置报表格式、多级分组汇总,使用户能够快速生成所需报表。提供打印预览、报表格式引入、数据引出 等功能接口。使熟悉...
第17 天使用SQL 来生成SQL 语句351 目标351 使用SQL 来生成SQL 语句的目的351 几个SQL*PLUS 命令352 SET ECHO ON/OFF353 SET FEEDBACK ON/OFF353 SET HEADING ON/OFF 353 SPOOL FILENAME/OFF353 START FILENAME354 ...
说明:通过这个报表找到排在前10 的sql语句,如果这些语句是用户编写的sql语句,我可以对其进行优化。 我们可以根据这些信息筛选出需要优化的SQL语句进行优化 SQL优化经验 大表缺索引---必要字段上建立索引 ...
1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的过滤窗口条件以及条件的参照内容。 4、可设置报表导出到Excel的格式。 5...
拉模式:在水晶报表生成时的数据源是从水晶报表文件中的SQL语句从数据库中提取的,在编程时不用重写SQL语句,但要加上登录信息(具体方法,后面介绍)。推模式:在水晶报表生成时的数据源,是用编程时重写水晶报表中...
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 3.导出一个数据库结构 mysqldump ...
此系统通过EXT技术和C#结合实现报表查询,新增,权限管理; 通过后台可以直接设置查询报表的SQL语句;是学习的不错资源。
本书包含了100个排序、筛选、打乱数据的技巧,大大增强了传统SQL语句的功能。通过本书,你可以学习到: ● 从命令行和程序往数据库发送SQL命令。 ● 使用高级的联合、过滤和分组技术,为数据报表获得数据。 ● 解决...
和对SQL语句不太会用的朋友查询之用。由于这是小程序,功能没有太多,只能查询,不能修改数据库的表。这个软件还有很多足之处,敬请谅解。“如SQL语句出错但没有提示是什么错误。”“不能保存,已经生成的语句。(但...
帆软cpt模板及sql 帆软FineReport使用技巧总结 1.重复与冻结设置,作用:冻结区域 模板-重复与冻结设置 2.单元格有效小数设置 选中单元格-格式-数字-#0.00 3.图表中有效小数设置 图表属性表-条件显示-新建条件...
T100 GR报表开发整理说明 ...9. 下载cxmr001_g01程序,修改sql语句,之后上传程序; 10. 系在cxmr001_g01样板,修改样板,上传样板; 11. azzi850赋予cxmr001权限; 12. 执行cxmr001,测试报表。
1、可根据SQL语句自动生成报表格式,打印格式,用户只要稍微调整就可形成一张普通报表。 2、可设置报表分组、小计、合计等。 3、可设置报表的过滤窗口条件以及条件的参照内容。 4、可设置报表导出到Excel的格式。 5...
3.3 使用SQL语句创建、修改、 删除数据库 59 3.3.1 用CREATE DATABASE语句 创建数据库 59 3.3.2 用ALTER DATABASE语句 修改数据库 60 3.3.3 用DROP DATABASE语句 删除数据库 62 3.4 附加与分离数据库 63 3.4.1 分离...
6.8.2 设置SQL Server的默认语言 6.8.3 允许和禁止嵌套触发器 6.8.4 控制查询的执行 6.8.5 配置2000年的支持 6.9 管理数据库设置 6.9.1 设置索引填充 6.9.2 配置备份和还原超时选项 6.9.3 配置备份和还原保持选项 ...