2014-10-28 8 views
0

좋아, 내 보고서를 작성하여 프린트하는 구글 그래서 ...(자바 것은)

현재 내가 사용은 JasperReports와 DynamicJasper 내 질문에 대한 답을 찾을 수 없습니다 . jasper-files 또는 jrxml-file을 하나만 사용하면 모두 잘 작동합니다. 또한 보고서를 결합해야하는 경우 모든 JasperPrint 파일을 하나로 병합하는 코드 조각이 있습니다. 그러나 이것은 실제로 최적이 아닙니다 ...

하나의 .jasper 또는 .jrxml 파일을 마스터 보고서 (머리글, 바닥 글 및 빈 빈 디테일 밴드가 있음)로 사용하고 세부 정보를 채울 수 있습니까? 1-n 하위 보고서가있는 대역 (현재 .jasrm 또는 .jxrml에 있음)?

현재 나의 wannabe 하위 보고서 중 하나만 datasource (tablemodel)를 사용하고 다른 wannabe 하위 보고서는 매개 변수에서 데이터를 가져옵니다.

내가 원하는 결과를 낼 수있는 여러 가지 방법을 찾았지만 지금까지 성공하지 못했습니다. 어떤 빌더/관리자/필요한 항목이 있습니까? 다른 클래스, 메소드 및 매개 변수에 대한 정보를 충분히 찾을 수 없기 때문에 조금 좌절감을 느낍니다. 왜 그들이 거기에 있고 필요한지. 예제는 충분히 설명하지 않습니다 ...

JasperFillManager.fillReport 메서드로 채워지는 JasperReport를 생성하는 DynamicJasperHelper에 대해 DynamicReportBuilder를 사용하여 DynamicReport를 빌드해야합니까?

+0

하위 보고서를 작성하는 경우 포함 된 보고서의 디자인이나 데이터가 다른 동일한 디자인이 사용됩니까? –

+0

일부 하위 보고서의 디자인이 다르며 일부 디자인이 다른 내용이 있습니다. – Antti

+0

동일한 디자인 하위 보고서가 있지만 다른 디자인의 경우 다른 하위 보고서를 만들어 런타임에 연결해야 할 때 아무런 문제가 없습니다. –

답변

1

모든 하위 보고서를 하나의 주 보고서에 포함하고 가시성을 위해 print when expression을 사용하십시오. 다음은 하위 보고서 코드입니다.

<subreport> 
    <reportElement uuid="9f36c3cb-7e29-4040-a14e-6a91775e89e4" x="0" y="35" width="555" height="47"> 
     <printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression> 
    </reportElement> 
<!-- Other Element --> 
</subreport> 

위의 코드에서 다음 줄을 찾으십시오.

<printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression> 

즉, 하위 보고서 전체는 $P{disp}.intValue() == 1 일 때 포함되어야합니다. 여기서 $P{disp}printWhenExpression으로 작업하기 위해보고해야하는 매개 변수입니다.

매개 변수 또는 불필요한 경우 field을 사용할 수도 있습니다. 조건은 요구 사항을 기반으로합니다.

Note : 모든 하위 보고서에 대해 비슷한 방식으로 접근 할 수 있습니다.

+0

감사! 마침내 제대로 작동했습니다. 내가 JREmptyDataSource를 보내지 않았기 때문에 하위 보고서가 표시되지 않았습니다 ...그러나 이러한 종류의 솔루션은보다 일반적인 방법으로 수행 될 수있는 많은 작업을 필요로합니다. 주된 문제는 테이블에 다른 컬럼이있을 수있는 하나의 테이블 jasper-file을 사용하는 것입니다. JasperReports는 다른 열을 가진 데이터를 제공 할 수있는 하나의 테이블을 가질 수 있습니까? – Antti

+0

가능합니다. –

+0

런타임시 .jasper-file의 테이블 구성 요소 열을 수정하는 방법에 대한 샘플 코드 또는 설명을 제공하도록 신경 써야합니까? – Antti