2014-02-27 2 views
2

세 가지 다른 쿼리가 있고 값마다 재스퍼 보고서에 들어갑니다. 쿼리는 Jrxml 파일 자체에 기록됩니다. 다른 동적 값을 기반으로 다른 쿼리를 실행할 수있는 방법은 무엇입니까? . 어떤 도움은 매우 극명하게 될 것이다재스퍼 보고서 다른 동적 값을 기반으로 다른 쿼리를 실행하십시오

If($(a) == "Germany") 

    run query 1 
If($(a) == "India") 
    run query 2 

처럼 (그것은 단지 sudo는 코드입니다).

+1

는 쿼리 1과 쿼리 2에서 돌아 분야가 다른가요 작동하도록 클래스 경로에 추가 할 수 있습니다? – sanBez

+0

예 실제로 필드와 값은 쿼리가 실행되는 필드에 따라 달라집니다. – Innovation

답변

3

가 하위 보고서를 subreport1.jrxml (쿼리 1), subreport2.jrxml (쿼리 1)

넣어 subreport1 및 subreport2 밴드의 제목 로 확인 mainReport.jrxml에서 매개 변수 $P{a} 정의 mainReport.jrxml

하위 보고서의 속성에 대해 mainReport의 PrintWhenExpression을 사용하십시오 (Window -> 속성) subreport1에 대한 mainReport에서

설정 PrintWhenExpression : subreport2에 대한 mainReport에서 $P{a}.equals("Germany")
설정 PrintWhenExpression : 응용 프로그램

+1

나는 작은 의심이있다. 이것은 N과 같은 쿼리를 실행하기 위해 새로운 하위 보고서를 만들어야한다는 것을 의미합니까 ?? .. – AngelsandDemons

+0

또 다른 방법은 subdataset을 사용하는 것입니다. http://stackoverflow.com/questions/7482412/multiple-queries-in-a-single-jasper-document 그러나 하위 데이터에는 몇 가지 제한 사항이 있습니다. AFAIR – sanBez

2

에서 mainReport에 $P{a}.equals("India")

패스 $P{a} 당신은 DynamicReports를 사용하여 시도 할 수 있습니다. 이것은 JasperReports를 기반으로하는 라이브러리이며 Java 코드에서 직접 보고서를 구성 해 보겠습니다. 여기 axample가 있습니다 Dynamic Reports 문자열과 연결 객체를 취할 수있는 .setDataSource() 메소드가 있습니다. 약간의 로직을 기반으로 쿼리를 설정할 수 있습니다. .setDataSource()가 오버로드되고 ResultSet 객체를 사용할 수도 있습니다. 따라서 다른 쿼리와 값을 전달하는 Statement/PreparedStatement 객체를 사용하고 그 결과를 보고서의 소스로 전달할 수도 있습니다. 도움이 되었기를 바랍니다.

P.S : 예 받는다는 종속성을 사용하지만, 당신은 또한 .JAR를 다운로드하고

관련 문제