普通报表的删除功能
用户在使用润乾报表时,经常遇到希望删除某一条数据的需求,润乾报表的行式填报中有插入、追加、删除行的功能,但对于普通报表,就需要另想办法了。下面主要介绍下如何在报表中删除一条数据,这里的报表没有特殊的要求,既可以是普通浏览式报表,也可以是填报表。
一:实现思路
通过在报表后面添加一个删除的超链接,超链接中调用一个js方法,同时传递删除数据所用到的参数以及删除后页面重定向的链接地址。Js方法中调用一个jsp,jsp中实现接受参数,执行sql语句,最后重定向到指定页面。
二:实现步骤
1:创建报表模板,设置超链接
数据源使用润乾自带的demo
数据集为:SELECT 产品.产品ID,产品.产品名称,产品.单价,产品.单位数量,产品.库存量 FROM 产品
超链接表达式为:”javascript:delData_jade(’showReportDJ.jsp?raq=/deleteusejs/deleteusejs.raq’,’产品’,’产品ID’,’”+A2+”‘)”
注意:删除一个产品只需要table名称、字段名称、产品ID即可,产品ID即为A2单元格中数据。
2:定义JavaScript
function delData_jade(refreshUrl,table,column,value)
{
if( table==null || table==” ){
alert(”删除数据表为空,请联系数据管理员”);
return false;
}
if( refreshUrl==null || refreshUrl==” ){
alert(”刷新url为空,请联系系统管理员”);
return false;
}
if( confirm(’确认删除吗?’) ){
window.location.href = “deleteusejs.jsp?refreshUrl=”+refreshUrl+”&table=”+table+”&column=”+column+”&value=”+value;
}
}
JavaScript中调用deleteusejs.jsp,同时传递参数给jsp。
3:定义jsp
<%@ page contentType=”text/html;charset=gb2312″ %>
<%@ page import=”java.io.*”%>
<%@ page import=”java.net.*”%>
<%@ page import=”java.util.*”%>
<%@ page import=”javax.servlet.*”%>
<%@ page import=”javax.servlet.http.*”%>
<%@ page import=”javax.naming.*,java.sql.*” %>
<%@ page import=”com.runqian.report4.usermodel.*”%>
<%
//获取各参数值
String tableName1=request.getParameter(”table”);
String colmn1=request.getParameter(”column”);
String value1=request.getParameter(”value”);
String refreshUrl = request.getParameter(”refreshUrl”);
Connection con = null;
Statement stmt = null;
try{
//获取context对象
com.runqian.report4.usermodel.Context ct = new com.runqian.report4.usermodel.Context();
con = ct.getConnectionFactory( ct.getDefDataSourceName() ).getConnection();
stmt = con.createStatement();
if(tableName1!=null&&colmn1!=null&&value1!=null&&tableName1!=””&&colmn1!=””&&value1!=””){
//定义删除sql语句
String sql=”delete from “+tableName1+” where “+colmn1+”=’”+value1+”‘”;
//执行sql语句
stmt.executeUpdate(sql);
}
//提交
con.commit();
//重定向url
response.sendRedirect(refreshUrl);
}catch(Exception e){
e.printStackTrace();
}finally{
//关闭流
if( stmt != null ) stmt.close();
if( con != null ) con.close();
}
%>
三:执行效果。
四:总结
利用此种做法不仅可实现删除功能,也可以实现添加数据,更新数据的功能。