2011-11-08 3 views
0

저는 Birt와의 전체 초보자입니다. 사실은 Flash/Flex에서 완료된 것과 비슷한 Birt 보고서를 만드는 것입니다.이 보고서는 찾고 있습니다. 정말 잘.Birt의 합성 필드

문제점 : Im Flex 솔루션 수치 값이 0 이상인 경우 레이블 뒤에 숫자 출력이있는 DataGrid의 한 필드가 있습니다.

레코드 세트 행의 두 값을 기반으로 Birt의 매핑 기능을 적용하여 국제화 된 값을 얻었습니다 (이 모두가 훌륭하게 작동합니다).

디자이너를 사용할 때 자신의 테이블 셀이나 테이블 행에 두 번째 필드 만 놓을 수는 있지만 나 (" 한 테이블 셀에서 두 필드를 모두 출력 할 수없는 것 같습니다.

누군가가 나를 통해 나를 안내 할 수 있다면 좋을 것입니다.

크리스

답변

2

당신은 동적 텍스트 자바 스크립트 expession에서 전체 문자열을 만들 수 있습니다.

자바 스크립트에서 i18n을 사용하는 방법은 BIRT FAQ에 간단히 설명되어 있습니다. 한 가지 흥미로운 질문 How can I localize strings in JavaScript 수 -이 표현은 지역화 된 텍스트를 제공합니다

reportContext.getMessage("companyNameKey", reportContext.getLocale()) 

행 데이터는 row 배열에 저장된다. 표현식 빌더에서 사용할 수있는 모든 필드. 당신이 발견하고 더블 클릭 원하는 필드, 다음과 같은 식을 다음과 같이 나타납니다

row["FOO_NUMBER"].value 

함께 모든 퍼팅 :

reportContext.getMessage("Foo number:", reportContext.getLocale()) + 
    (row["FOO_NUMBER"].value > 0) ? ("("+row["FOO_NUMBER"].value+")") : ("") 
+0

안녕 ... 고마워요. 그것은 트릭을했습니다 :-) ... "FOO_NUMBER"가 Float 유형이므로 값을 추가하면 "정의되지 않은"결과가 출력됩니다. 이를 멀리두면 dynamicText가 예상대로 작동합니다. 이를 해결할 수있는 유일한 방법은 보고서 로캘에 관한 float 출력을 만듭니다 (현재 float은 미국에서 올바른 "1.4"형식으로 출력되지만 독일에서는 "1,4"이어야합니다.) –

1

감사를 jinowolskis 게시에 ... 단지 전체 솔루션 단지의 경우를 추가하고 싶었 누구나 같은 문제가 발생합니다 :-)

importPackage(Packages.java.text); 
var myKey = "" + row["vulnerabilityClass"] + "." + row["result"]; 
if(row["cvssScore"] >= 0) { 
    var nf = NumberFormat.getNumberInstance(reportContext.getLocale()); 
    nf.setMinimumFractionDigits(1); 
    nf.setMaximumFractionDigits(1); 
    reportContext.getMessage(myKey, reportContext.getLocale()) + " (" + nf.format(row["cvssScore"]) + ")"; 
} else { 
    reportContext.getMessage(myKey, reportContext.getLocale()); 
}