2017-05-19 1 views
-1

Start date, end datetype (입력, 출력 또는 입출력 일 수 있음) 매개 변수를 사용하여 보고서를 작성 중입니다. 내가 입력과 내가 여러 가지 방법을 시도했습니다재 스퍼 보고서에 대한 이중 매개 변수 전달

출력을 얻는다 보고서를 얻으려고 내가 결과를 얻을 수 없을 때까지

모든 것이 잘 작동합니다. 보고서에

검색어 :

enter image description here

자바 :

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 {} 중 ... 결코 내가 원하는 방식대로 갈 수 없거나 3 중항을 할 것입니다. {} 모든게 좋았어.

1

dynamic queries 기능을 사용해야합니다. 귀하의 요청에

  1. 가 있습니다

    $P! 구문은 자바 코드에서
  2. 는이
    and he.tipo=$P!{tipmov} 
    

    주의 :

    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

아마도 괄호 안에 쿼리의 *와 * 부분을 래핑해야합니다. 시도해보십시오 :'and (he.tipo = $ P! {tipmov})'그리고 무슨 일이 일어나는 지보십시오. – Narcis

관련 문제