java - How to use result set in JasperResports as data source? -


here snippet of jasperreport developed uses static query embedded in report.

<jasperreport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report" pagewidth="842" pageheight="595" orientation="landscape" columnwidth="802" leftmargin="20" rightmargin="20" topmargin="20" bottommargin="20" isfloatcolumnfooter="true">      <property name="ireport.zoom" value="1.0"/>      <property name="ireport.x" value="129"/>      <property name="ireport.y" value="0"/>      <parameter name="lp" class="java.lang.integer"/>      <parameter name="all_price" class="java.lang.integer"/>      <parameter name="all_amount" class="java.lang.integer"/>      <parameter name="all_total_price" class="java.lang.integer"/>      <querystring>           <![cdata[select sanaf_number,sanaf,sales_id,sales.sanaf_id,customer_name,  price, total_price, addad, wahda, required_amount sanaf,sales  (sales.export='0')and(sanaf.sanaf_id=sales.sanaf_id) limit $p{lp}]]>      </querystring>      <field name="sales_id" class="java.lang.integer"/>      <field name="sanaf_id" class="java.lang.integer"/> 

now need use resultset instead of static query. code use execute report below/

void showresports(){   try{     // originalexportoriginalexport      string reportname ="";      if(export.equalsignorecase("1")){       reportname = "originalexport.jasper";     } else if(export.equalsignorecase("0")){       reportname = "exportreport4.jasper";     }      inputstream in =getclass().getresourceasstream(reportname);      if(in==null|| connection==null) return ;      hashmap parametermap = new hashmap();     parametermap.put("lp", new integer(selectednumber));      if(export.equalsignorecase("0")){       int all_price=databasemanager.counttotalpriceforimport(selectednumber);       int all_amount=databasemanager.countamountforimport(selectednumber);       int all_total_price=databasemanager.counttotalprice(selectednumber);        parametermap.put("all_price",new integer(all_price));       parametermap.put("all_amount",new integer(all_amount));       parametermap.put("all_total_price",new integer(all_total_price));     } else if(export.equalsignorecase("1")){       int all_requiredamount=databasemanager.countallrequiredamount(selectednumber);       int all_given_amount=databasemanager.countallgivenamount(selectednumber);       parametermap.put("all_requiredamount",new integer(all_requiredamount));       parametermap.put("all_given_amount",new integer(all_given_amount));     }      jasperprint jp = jasperfillmanager.fillreport(in, parametermap, connection);     system.out.println("object of jasper print created");      jrviewer jv = new jrviewer(jp);     //insert viewer jframe make showable     jframe jf = new jframe();     jf.getcontentpane().add(jv);     jf.validate();     jf.setvisible(true);     jf.setsize(new dimension(800,600));     jf.setlocation(300,100);     jf.setdefaultcloseoperation(jframe.dispose_on_close);     }catch(exception e){     e.printstacktrace();   } }// showreports 

if result set contains same fields query have embedded in report, need remove querystring report , change:

jasperfillmanager.fillreport(in, parametermap, connection); 

to

jasperfillmanager.fillreport(in, parametermap, new jrresultsetdatasource(resultset)); 

where resultset result set data.

the complication comes in if result set has different names fields, or different fields altogether. in case need adjust field names in report also.


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -