2014-01-08 5 views
1

다음과 같은 쿼리를 사용하는 BIRT 보고서가 있습니다.BIRT 보고서 - 스크립트를 통해 매개 변수 추가

select Dealer, Name from customerA where id = ? union all select Code as Dealer, last_name as Name from customerB where id = ? union all select Num as Dealer, owner as Name from customerC where id = ?

나는 보고서의 입력 텍스트 상자 자체 보고서를 다시 새로 고침 버튼이 있습니다. 또한 내 보고서에는 'CUST_ID'라는 매개 변수가 있습니다.이 매개 변수는 데이터 집합에서 param_1, param_2 및 param_3으로 바뀌어 '?'로 바뀝니다. 실행 중 표시.

팝업 팝업 화면에서 매개 변수를 입력하면 보고서가 제대로 작동하지만 텍스트 상자에 ID를 입력해야하고 이에 따라 보고서 새로 고침 링크를 다시 한 번 누를 필요가 있습니다.

어떻게 입력 텍스트 값을 추가 할 수 있습니까 (스크립트에서 가져올 수 있다는 것을 알고 있습니다). 보고서 매개 변수 'CUST_ID'를 설정하면됩니까?

도움을 주셔서 감사합니다.

미리 감사드립니다.

+1

보고서를 새로 고칠 때 사용하는 URL 끝에 'CUST_ID'매개 변수를 추가 했습니까? 이런 식으로 보일 겁니다. http://reports.com/run?__report=YourReport.rptdesign&CUST_ID=Value –

+0

@JamesJenkins에게 감사의 말을 전합니다. 여기는 요청 URL에 어떤 권한도 없습니다. '새로 고침'링크에서 나는 속성에 대한 링크를 사용하고 동일한 보고서를 보냈습니다. 데이터 원본 'beforeOpen'메서드에서 'this.queryText'통해 쿼리 텍스트를 얻을 수 참조하십시오. 아직도 내가하고있는 것이 올바른지 BIRT에 익숙하지 않은지 확실하지 않다. 돌아와 주셔서 다시 한번 감사드립니다. 니가 아무거나 있으면 알려줘. – Sam

+0

나는 그것을하지는 못했지만 http://developer.actuate.com/community/forum/에서 몇 게시물을 읽었습니다. 당신이하고 싶은 것은 URL을 제어 할 수 있도록 새로 고침 버튼을 재 작업한다는 것입니다 사용자가 매개 변수로 입력 한 값으로 보고서 실행 시간에 보고서를 작성할 수 있습니다. 나는 기본적으로 html로 실행되는 몇 가지 보고서를 가지고 xls로 실행할 링크가 포함되어 있지만 다른 우선 순위를 매개 변수로 넘겨주는 기능을 추가하는 것을 고려해 보았습니다 ... '응답 방법' 나는 그것을 읽고 싶다. –

답변

3

BIRT에서 스크립트를 사용하여이 문제를 해결할 수있었습니다. 아래에 내가 따라야 할 단계가 나와 있습니다.

1. 페이지로드시 요청 매개 변수를 시작하는 스크립트를 추가하십시오. 정상적인 자바 스크립트 기능 내에서 var link=this;을 사용하여 액세스 할 수있었습니다.

2. 위의 james에 언급 된대로 요청의 끝 부분에 my 매개 변수를 추가하십시오. 제임스에게 고마워.

3. 새로 작성한 URL을 다시 작성하십시오. link.href=url; 그러면 입력란에 입력 한 값 i로 보고서가 새로 고쳐집니다.

4.in 데이터 세트는 where 절이없는 'Select name from customerA'으로 내 쿼리를 수정했습니다.

5. 데이터 집합 beforeOpen 스크립트이 줄을 추가 했으므로 레코드가 적절하게 필터링됩니다.

this.queryText += "where id ="+reportContext.getParameterValue("cust_id"); 
reportContext.setParameterValue("debug", this.queryText); 
관련 문제