2012-03-26 48 views

答えて

0

*を選択することはできません。データを取得する列名を指定する必要があります。 commDB.queryを使用してクエリを実行し、結果をcommDBResultに渡し、ループを実行し、レコードの各行を配列リストに入れてから、ジャスパーを使用してレポートを生成します。

+0

ありがとうございます。私は正常にレポートを生成しました。私が直面している問題は、私のレポートは静的です。私は動的なレポートが欲しい。クエリを変更するjsp/javaからidの値(たとえば)を入力して、対応するレポートを生成することを意味します。キツイより – vicky

14

パラメータを含むマップを作成し、ペア。

Map parametersMap = new HashMap(); 
parametersMap.put("id",7); 

JSPからジャスパーレポートを生成:

parametersMapのキーは、あなたのレポートテンプレートで定義されたパラメータとしてexcatly同じでshoud
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parametersMap, jdbcConnection); 

。だから、

、レポートテンプレート(jrxml)でパラメータを宣言します。

<parameter name="id" class="java.lang.Integer"/> 

パスパラメータをクエリでジャスパーレポートに

select * from personal where id= $P{id} 
+0

。問題は解決されました。 もう1つだけ質問したかったジャスパーレポートに$ P {id}というパラメータを出力したいとします。 (今はクエリで使用しています)。レポートにパラメータを印刷したいだけです。それは可能です.. はい。あなたの助けてください。 – vicky

+1

問題が解決した場合は、質問に「回答済み」とマークする必要があります。 i-Reportで印刷するセクションを選択します。フィールド$ F {id} .BTWを定義します。これは別の質問です。 :) –

0

これは、JSPのためのあなたのコードになります。

<%@page import="net.sf.jasperreports.engine.JasperExportManager"%> 
<%@page import="net.sf.jasperreports.engine.JasperExportManager"%> 
<%@page import="net.sf.jasperreports.view.JasperViewer"%> 
<%@page import="net.sf.jasperreports.engine.JasperPrint"%> 
<%@page import="net.sf.jasperreports.engine.JasperReport"%> 
<%@page import="net.sf.jasperreports.engine.JasperFillManager"%> 
<%@page import="net.sf.jasperreports.engine.JRResultSetDataSource"%> 
<%@page import="net.sf.jasperreports.engine.JasperCompileManager"%> 
<%@page import="net.sf.jasperreports.*"%> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
<% 
      try 
      { 
     JasperReport jasperReport=JasperCompileManager.compileReport("PASS LOCATION TO YOUR .JRXML FILE"); 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_fleet" , "root", "root"); 
     Integer inv_no=0; 
     Statement stmt = null; 
     ResultSet rset = null; 
     Statement st2=conn.createStatement(); 
     String queryString = "PASS YOUR QUERY HERE"; 
     stmt = conn.createStatement(); 
     rset = stmt.executeQuery(queryString); 
     JRResultSetDataSource jasperReports = new JRResultSetDataSource(rset); 
     JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null, jasperReports); 
     //JasperViewer.viewReport(jasperPrint); 

     String filename=null; 
     filename="SET NAME TO YOUR FILE NAME AND APPEND.pdf TO IT"; 

     //Report saved in specified path 
     JasperExportManager.exportReportToPdfFile(jasperPrint,filename); 

     //Report open in Runtime 
     Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " +filename); 
     } 
     catch(Exception e) 
     { 
      out.println(e); 
     } 
    %> 

    </body> 
    <script> 

    </script> 
</html> 
+0

おそらく、jasperreportレポートを更新するために必要なパラメータを持つサービスレイヤーを呼び出す方が、より良いプログラミングパターンです。そのため、あなたの投稿をdownvotedしました。 – ThierryB

関連する問題