0

jasperreports issue

asked 2009-05-05 01:04:54 +0800

leoyc gravatar image leoyc
163 3

updated 2009-05-06 01:38:47 +0800

tomcat6.0+zk3.6

code like this:
***************
<?xml version="1.0" encoding="GB2312"?>
<zk>
<zscript>
String mcs=arg.get("para");
String mrpno=arg.get("rpno");
String mrpname=arg.get("rpname");
String mls=arg.get("ls");
</zscript>

<window id="pwin" title="Print Report" border="normal" width="480px" closable="true" position="center" maximizable="true">
<borderlayout height="100%">
<north maxsize="24" size="24" border="0">
<button label="Report!" onClick="showReport()" />
</north>
<center border="none" flex="true">
<jasperreport id="report" />
</center>
</borderlayout>

<zscript>
import java.util.*;
import java.io.*;
import java.sql.*;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import my.DBPool;

void showReport() {
Connection conn = null;
CallableStatement cstmt=null;
ResultSet rs=null;
report.setDatasource(null);
Connection conn=DBPool.getPool().getConnection();
cstmt=conn.prepareCall("{call preport(?,?,?)}");
cstmt.setString(1,mrpno);
cstmt.setString(2,mls);
cstmt.setString(3,mcs);
rs=cstmt.executeQuery();
Map parameters = new HashMap();
parameters.put("date1", mcs.substring(0,mcs.indexOf(";")));
parameters.put("date2", mcs.substring(mcs.indexOf(";")+1));
report.setParameters(parameters);
report.setSrc(mrpname);
report.setDatasource( new JRResultSetDataSource(rs));
rs.close();
rs=null;
cstmt.close();
cstmt=null;
conn.close();
conn=null;
}

</zscript>
</window>
</zk>
****************
issue message:

type Status report

message 无法载入 /view/gr5e/z_r5_q3/0/D:/OpenSource/Tomcat 6.pdf。 原因: net.sf.jasperreports.engine.JRException: Unable to get next record.[SQL: 0, S1000]

description The requested resource (无法载入 /view/gr5e/z_r5_q3/0/D:/OpenSource/Tomcat 6.pdf。 原因: net.sf.jasperreports.engine.JRException: Unable to get next record.[SQL: 0, S1000] ) is no longer available, and no forwarding address is known.


--------------------------------------------------------------------------------

delete flag offensive retag edit

6 Replies

Sort by » oldest newest

answered 2009-05-05 03:09:50 +0800

iantsai gravatar image iantsai
2755 1

report.setSrc(mrpname);
report.setDatasource( new JRResultSetDataSource(rs));
rs.close();
rs=null; 

I'm not familiar with jasperreports, but you closed the "rs" which could be used by JRResultSetDataSource latter.

link publish delete flag offensive edit

answered 2009-05-06 01:45:14 +0800

leoyc gravatar image leoyc
163 3

updated 2009-05-07 01:59:02 +0800

ianstai,thank for your reply.it's ok when it remark this code:
//rs.close();
//rs=null;
//cstmt.close();
//cstmt=null;
//conn.close();
//conn=null;

how can I close the 'conn'?

link publish delete flag offensive edit

answered 2009-05-06 06:58:12 +0800

iantsai gravatar image iantsai
2755 1

I don't know, it depends on your Application design.
Maybe you can "ask" jasperreport to output result first, then you can close it.

link publish delete flag offensive edit

answered 2009-05-06 08:42:19 +0800

leoyc gravatar image leoyc
163 3

updated 2009-05-06 22:30:47 +0800

I want close 'conn' after ask jasperreport immediately. but it's wrong. like this:

*******************
<?xml version="1.0" encoding="GB2312"?>
<zk>
<zscript>
String mcs=arg.get("para");
String mrpno=arg.get("rpno");
String mrpname=arg.get("rpname");
String mls=arg.get("ls");
</zscript>

<window id="pwin" title="Print Report" border="normal" width="480px" closable="true" position="center" maximizable="true">
<borderlayout height="100%">
<north maxsize="24" size="24" border="0">
<button label="Report!" onClick="showReport()" />
</north>
<center border="none" flex="true">
<jasperreport id="report" />
</center>
</borderlayout>

<zscript>
import java.util.*;
import java.io.*;
import java.sql.*;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import my.DBPool;

void showReport() {
Connection conn = null;
CallableStatement cstmt=null;
ResultSet rs=null;
report.setDatasource(null);
Connection conn=DBPool.getPool().getConnection();
cstmt=conn.prepareCall("{call preport(?,?,?)}");
cstmt.setString(1,mrpno);
cstmt.setString(2,mls);
cstmt.setString(3,mcs);
rs=cstmt.executeQuery();
Map parameters = new HashMap();
parameters.put("date1", mcs.substring(0,mcs.indexOf(";")));
parameters.put("date2", mcs.substring(mcs.indexOf(";")+1));
report.setParameters(parameters);
report.setSrc(mrpname);
report.setDatasource( new JRResultSetDataSource(rs));
rs.close();
rs=null;
cstmt.close();
cstmt=null;
conn.close();
conn=null;
}

</zscript>
</window>
</zk>
****************

link publish delete flag offensive edit

answered 2009-05-07 01:54:36 +0800

leoyc gravatar image leoyc
163 3

How Can I close 'conn' when 'pwin' close?

link publish delete flag offensive edit

answered 2009-05-07 08:38:54 +0800

leoyc gravatar image leoyc
163 3

release "conn" in pwin "onClose()". it's ok. code like this:

**************
<?xml version="1.0" encoding="GB2312"?>
<zk>
<zscript>
String mcs=arg.get("para");
String mrpno=arg.get("rpno");
String mrpname=arg.get("rpname");
String mls=arg.get("ls");
</zscript>

<window id="pwin" title="Print" border="normal" width="480px" closable="true" position="center" maximizable="true" onClose="connrelease();">
<borderlayout height="100%">
<north maxsize="24" size="24" border="0">
<button label="Report!" onClick="showReport()" />
</north>
<center border="none" flex="true">
<jasperreport id="report" />
</center>
</borderlayout>

<zscript>
import java.util.*;
import java.io.*;
import java.sql.*;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import my.DBPool;
Connection conn = null;
CallableStatement cstmt=null;
ResultSet rs=null;
Connection conn=DBPool.getPool().getConnection();


void connrelease() {
rs.close();
rs=null;
cstmt.close();
cstmt=null;
conn.close();
conn=null;
}

void showReport() {

report.setDatasource(null);
cstmt=conn.prepareCall("{call preport(?,?,?)}");
cstmt.setString(1,mrpno);
cstmt.setString(2,mls);
cstmt.setString(3,mcs);
rs=cstmt.executeQuery();
Map parameters = new HashMap();
parameters.put("date1", mcs.substring(0,mcs.indexOf(";")));
parameters.put("date2", mcs.substring(mcs.indexOf(";")+1));
report.setParameters(parameters);
report.setSrc(mrpname);
report.setDatasource( new JRResultSetDataSource(rs));
}

</zscript>
</window>
</zk>
*****************

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2009-05-05 01:04:54 +0800

Seen: 449 times

Last updated: May 07 '09

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More