2017-05-19 3 views
-1

パラメーター: Start date,およびtype(入力、出力、または入出力とすることができる)を使用してレポートを作成しています。私は多くの方法でそれを試みたと私は結果を得ることができない入力と出力ジャスパー報告書のダブルパラメーターの受け渡し

を取得したレポートを取得しようとするまで

すべてが正常に動作します。

レポートのクエリ:

enter image description here

のJava:

protected void relEntrada(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
try{ 
    SessionImplementor sim = (SessionImplementor) HibernateUtil.getSessionFactory().openSession(); 
    Connection con = sim.connection(); 

    String tipoMov = request.getParameter("tipMov"); 

    String dataini = request.getParameter("dataini"); 
    String dtini[] = dataini.split("/"); 
    String diai = dtini[0]; 
    String mesi = dtini[1]; 
    String anoi = dtini[2]; 

    String datafim = request.getParameter("datafim"); 
    String dtfim[] = datafim.split("/"); 
    String diaf = dtfim[0]; 
    String mesf = dtfim[1]; 
    String anof = dtfim[2]; 

    HashMap param = new HashMap(); 
    param.put("dataini", anoi +"-"+mesi+"-"+diai + " 00:00:00"); 
    param.put("datafim", anof +"-"+mesf+"-"+diaf + " 23:59:59"); 

    if (tipoMov.equalsIgnoreCase("entrada")) { 
     param.put("tipmov", "entrada"); 
    } else if(tipoMov.equalsIgnoreCase("saida")) { 
     param.put("tipmov", "saida"); 
    } else if(tipoMov.equalsIgnoreCase("entradaesaida")) { 
     param.put("tipmov", "entrada or tipo = "+'"'+"saida"+'"'); 
    } 

    InputStream arquivo = getServletContext().getResourceAsStream("/relatorios/RelMoviment.jasper"); 

    byte[] pdf = JasperRunManager.runReportToPdf(arquivo, param ,con); 

    ServletOutputStream out = response.getOutputStream(); 
    out.write(pdf); 
    out.flush(); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 
} 

誰かが私を助けてくださいことはできますか?

+1

あなたの質問は何ですか? –

+0

私は入力だけで結果を得ましたが、出力合計で結果が得られましたが、入力と出力で結果を得ることができません...どうすればよいですか? – sounobre

答えて

0

しかし、私が電話していなかったことがあった! p {}の...私がpを置いた後、私が望むやり方や決断を決して行かないだろう! {}すべてがクールだった。

1

dynamic queries機能を使用する必要があります。クエリで

  1. ている:Javaコードで

    and he.tipo=$P!{tipmov} 
    

    予告$P!構文

  2. を持っている:単一引用符は、各パラメータ値のためのエスケープ

    if (tipoMov.equalsIgnoreCase("entrada")) { 
        param.put("tipmov", "'entrada'"); 
    } else if(tipoMov.equalsIgnoreCase("saida")) { 
        param.put("tipmov", "'saida'"); 
    } else if(tipoMov.equalsIgnoreCase("entradaesaida")) { 
        param.put("tipmov", "'entrada' or he.tipo='saida'"); 
    } 
    

    通知を。

+0

私は入力だけで結果を得ていますが、出力合計で結果は得られましたが、入力と出力で結果を得ることはできません...どうしたらいいですか? – sounobre

+0

括弧で囲んでクエリの*と*の部分を囲む必要があるかもしれません。試してください: 'と(he.tipo = $ P!{tipmov})'と何が起こるかを見てください。 – Narcis

関連する問題