2010-03-11 4 views
1

BIRT 보고서에 대한 보고서 쿼리를 외부화하는 방법이 있습니까? 우리는 여러 데이터베이스 엔진을 지원해야하므로 쿼리는 기본 데이터베이스에 따라 다릅니다. 특정 쿼리 파일을 사용하도록 BIRT 보고서에 알려주는 config 매개 변수를 사용하고 싶습니다.외부화 BIRT 쿼리

답변

1

물론 가능합니다. 보고서 자체에 일부 자바 스크립트를 코딩하면 디스크의 파일에 액세스하여 문자 쿼리 이 실행되기 전에 수정됩니다.

코딩해야 할 이벤트는 데이터 소스에 beforeOpen입니다. 못생긴 수정 바로 우리입니다

select A from B where ((C = ?) or (1==1)) 

:

select A from B where C = ? 

에 : 우리는 실제로에서 변경, 그들은 "*"로 설정하는 경우 감지하고 동적 SQL 쿼리를 조정하여 와일드 카드 매개 변수 이것을 사용 위치 매개 변수를 변경하는 것에 대해 걱정할 필요가 없습니다.

당신은 디스크 파일에서 라인을 읽고 같은 뭔가 쿼리를 변경할 수 있습니다 당신은 아마 그것의 나는 그것을 제거 :-) 더 나은 오류보다 체크를해야하지만

try { 
    var fip0 = new Packages.java.io.FileInputStream("/query.txt"); 
    try { 
    var fip1 = new Packages.java.io.DataInputStream(fip0); 
    try { 
     queryText = fip1.readLine() + ""; 
    } catch(e1) {} 
    fip1.close(); 
    } catch(e2) {} 
    fip0.close(); 
} catch(e3) {} 

(1) 다소 큰; (2) 약간 독점적입니다.

1

이 옵션을 사용하는 방법을 모른다. 데이터 세트의 onLoad 이벤트를 시작하기 위해 꽤 복잡한 스크립팅을 꿈꿀 수 있습니다.

각 DB에 동일한 저장 프로 시저를 배치하는 방법은 어떻습니까? 그런 다음 (보고서 데이터 소스의 편집 페이지에서) 데이터 연결 정보를 매개 변수화하고 보고서를 동적으로 지정하여 특정 데이터 소스를 쿼리 할 수 ​​있습니다. 저장된 프로 시저가 모든 인스턴스에있는 한 올바른 소스에서 올바른 데이터를 가져옵니다.