2011-02-26 4 views
1

많은 정보가 들어있는 마스터 보고서가 있는데 하위 보고서를 추가해야합니다. 마스터 보고서 JUnit 테스트를 실행할 때 예외가 throw됩니다.Jasper 보고서 포함점 문제

net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: The subreport is placed on a non-splitting band, but it does not have a rewindable data source. 
    at net.sf.jasperreports.components.table.fill.FillTable.rewind(FillTable.java:392) 
    at net.sf.jasperreports.engine.fill.JRFillComponentElement.rewind(JRFillComponentElement.java:171) 
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.rewind(JRFillElementContainer.java:651) 
    at net.sf.jasperreports.engine.fill.JRFillBand.refill(JRFillBand.java:355) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270) 
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946) 
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864) 
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) 
    at ar.com.qyttrade.jasperreports.ExtraMainReportTest.extraReportTest(ExtraMainReportTest.java:95) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: net.sf.jasperreports.engine.JRException: The subreport is placed on a non-splitting band, but it does not have a rewindable data source. 
    at net.sf.jasperreports.engine.fill.JRFillSubreport.rewind(JRFillSubreport.java:782) 
    at net.sf.jasperreports.components.table.fill.FillTable.rewind(FillTable.java:388) 
    ... 35 more 

이 오류의 목적을 알지 못합니다. Detail Band에서 "Split type"및 "Split Allowed"로 모든 조합을 시도했지만 작동하지 않습니다. 이 오류가 왜 발생했는지 알아야합니다. 또 다른 문제는 하위 보고서에 있습니다. 자체 데이터 원본이있는 테이블, 매개 변수를 마스터 보고서로 설정하는 방법 및 하위 보고서에서이 데이터 원본을로드하는 방법은 무엇입니까?

답변

1

이 작업은 하위 보고서를 제목 밴드 또는 페이지 머리글 밴드에 배치 한 경우에만 발생합니다. 위의 밴드를 제외하고 하위 리포트를 배치하십시오.이 밴드는 루핑되지 않는 밴드이기 때문입니다.

2

겹치는 요소가 전혀 없는지 확인하고 싶을 수 있습니다. Jasper는 하나의 픽셀로도 요소가 겹치면 매우 까다롭기도합니다. 이와 같은 상황이 발생하면 보고서를 저장 한 다음 한 번에 하나의 요소 만 제거하기 시작합니다.

게시물에서 분명하지 않지만 두 보고서는 주 보고서의 하위 보고서없이 실행하면 독립적으로 작동합니다. 그것이 제가 테스트 할 첫 번째 것입니다. 여기서 구체적으로 어떤 일이 일어나고 있는지 추측하면 하위 보고서가 주 보고서에 배치되는 작은 영역이 있다는 것입니다. 그런 다음 주 보고서는 하위 보고서에서 수행 할 수없는 페이지간에 분할하도록 하위 보고서를 요청합니다. 이 경우 하위 보고서를 독자적으로 테스트하여 페이지의 다른 영역으로 분할 할 수있는 상태가되도록하십시오.

+0

마스터 보고서에서 같음이라고하는 하위 보고서의 요소가없는 겹치는 요소없이 무엇을 말하고 싶습니까? 제안한 첫 번째 솔루션을 확인하지만 여전히 예외가 있습니다. – Nicopuri

2

iReport으로 재스퍼 보고서를 디자인하고 작성하는 것이 훨씬 쉬울 것입니다. iReport는 밴드와 구성 요소의 위치를 ​​시각적으로 보여주기 때문에 문제가 중복되는 상황에서 실제로 멈추지 않습니다. 도구 상자에서 끌어다 놓을 수 있습니다. 스윙에 Matisse를 사용하는 것과 거의 같습니다.

+0

jasper 보고서를 작성하기 위해 iReport를 사용하고 있습니다. – Nicopuri

+0

죄송합니다! 그런 다음 여기를보십시오 : https://issues.apache.org/jira/browse/WW-2776. 아마도 하위 보고서가 허용되는 한도를 초과합니다. 축소 된 데이터 세트를 사용하여 오류가 발생한 위치를 확인하고 확장하십시오. –

관련 문제