搜索文章

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 普通报表的删除功能

普通报表的删除功能

用户在使用快逸报表时,经常遇到希望删除某一条数据的需求,快逸报表的行式填报中有插入,追加,删除行的功能,但对于普通报表,就需要另想办法了。下面主要介绍下如何在报表中删除一条数据,这里的报表没有特殊的要求,既可以是普通浏览式报表,也可以是填报表。

一:实现思路

通过在报表后面添加一个删除的超链接,超链接中调用一个js方法,同时传递删除数据所用到的参数以及删除后页面重定向的链接地址。Js方法中调用一个jspjsp中实现接受参数,执行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();

}

%>

三:执行效果。

四:总结

利用此种做法不仅可实现删除功能,也可以实现添加数据,更新数据的功能。