2009-08-04 4 views
1

BIRT에 보고서가 있으며 끝에 요약을 추가하고 싶습니다.BIRT - 여러 데이터 집합에서 합계를 더하기

보고서는 자체 데이터 세트가있는 3 개의 테이블입니다. 요약 정보가 총계 인 네 번째 표를 보여주고 싶습니다. 총계 계산에 어려움이 있습니다.

예 :

DataSet #1 
col1 | col 2 | Total 
    x |  x |  x 
    x |  x |  x 
        xx 


DataSet #2 
col1 | col 2 | Total 
    x |  x |  x 
    x |  x |  x 
        xx 

DataSet #3 
col1 | col 2 | Total 
    x |  x |  x 
    x |  x |  x 
        xx 


Summary 
Total DataSet #1 | xx 
Total DataSet #2 | xx 
Total DataSet #3 | xx 
Grand Total  | xxx 

답변

3

이미 처음 세 각 테이블에서 필요한 하위 합계를 만드는 (I 추측 할 그룹을 통해). 총계가있는 표 셀의 스크립팅 이벤트를 작성하려면 지속적인 전역 변수를 설정하여 각 소계를 추적하십시오. 네 번째 테이블과 마지막 테이블의 각 값에 액세스 할 수 있습니다.

변수를 설정하려면 :

var totalValue = this.getDataRowData().getColumnValue("totalColumnName"); 
reportContext.setPersistentGlbalVariable("DataSet1Total", totalValue.toString()); 

참고 : 당신은 직렬화를 보장하기 위해 "문자열"유형의 총계를 보내야합니다. 최종 요약 테이블을 렌더링 할 때 다시 숫자로 변환 할 수 있습니다.

변수를 사용하려면 요약 컨트롤의 셀에있는 보고서에 텍스트 컨트롤을 추가하십시오.

this.text = reportContext.getPersistentGlobalVariable("DataSet1Total"); 

당신은 이전에 유지 각 요약 필드에 이런 짓을 했을까 : 텍스트 컨트롤의에서 onCreate 스크립트 이벤트에 다음 입력합니다. 그리고 그랜드 총, 당신은이 작업을 수행 할 수 있습니다

this.text = parseInt(getPersistentGlobalVariable("DataSet1Total")) + parseInt(getPersistentGlobalVariable("DataSet2Total")) + parseInt(getPersistentGlobalVariable("DataSet3Total")); 

지속적인 글로벌 변수는 보고서의 내부 구성 요소의 경계를 넘어 액세스 할 수있는 직렬화 값이 단순히. 그것은 당신처럼 요구 사항에 매우 편리하게 올 수 있습니다.

행운을 빌어 요!

+0

이 작업을 시도했지만 작동하지 않는 것 같습니다. 내 데이터 세트 합계는 테이블 집계 (SUM 함수)입니다. 필드는 바닥 글에 있습니다. 작동하지 않는 테이블의 Render 메서드에 코드를 추가하려고했습니다. 꼬리말의 텍스트 필드에있는 Render 메서드에 추가하려고 시도했는데 너무 효과적이지 않습니다. 내가 잘못하고있는 것에 대한 제안/문제를 해결하는 방법은 환영합니다. – shikarishambu

관련 문제