2011-06-14 6 views
1

나는 유니온 멤버쉽에 기반한 엔트리리스트를 반환하는 oracle.jdbc.driver.OracleDriver을 통해 오라클 데이터베이스에 연결하는 iReport 2.0.4의 보고서 작업을하고 있습니다. 보고서는 매개 변수로 시작 날짜, 종료 날짜 및 공용 이름을 사용합니다. 쿼리의 기본 구조는iReport 2.0.4 : SQL 쿼리에서 문자열 유형 매개 변수가 작동하지 않습니까?

select 
    ... 
from 
    ... 
where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = $P{UnionName} 
... 

StartDateEndDate 유형 java.lang.Date을 가지고 UnionNamejava.lang.String을 입력 가지고있다.

UnionName 매개 변수를 사용하고 공용 이름 (예 : "AFSCME")을 전달하면 쿼리에서 데이터를 반환하지 않습니다. 나는 UnionName 매개 변수를 제거하고

where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = 'AFSCME' 

다음 나는 그 노동 조합의 이름에 대한 기대 행을 얻을에로, 노동 조합의 이름을 하드 코딩합니다.

왜 날짜 매개 변수는 작동하지만 문자열 매개 변수는 작동하지 않습니까? 문자열 매개 변수 (예 : .trim())를 호출하여 작동하도록하는 메소드가 있습니까? 고정

UPDATE,

찾을 수를 수정 다른 포럼에 다른 질문에 대한 답변; 쿼리에서 매개 변수의 즉각적인 대체 (용어?)를 수행해야하므로

where 
    union_opt_in_dt <= $P{EndDate} and 
    union_opt_out_dt >= $P{StartDate} and 
    union_name = '$P!{UnionName}' 

이렇게 작동합니다. 내가 그것의 논리를 이해하는지 모르겠다. (1 주일 반 전까지 만해도 은 Jasper Reports의라고 들었지만) 나는 적어도 앞으로 나아갈 수있다.

업데이트] UPDATE는

이 좋아 고정되지, 그래서 위의 솔루션은 내가 필요로하는 매우 것이 아니다; 단지 전달 된 것이 아니라 기본값으로 만 대체됩니다.

날짜가 작동하는 이유는 무엇입니까? 아니요, 조합 번호는입니까? 매개 변수의 값이 데이터베이스의 문자 (문자)의 문자와 정확히 일치하는지 확인했습니다.

답변

0

전달하기 전에 UnionName을 트리밍 해보십시오.

+0

쿼리에서'$ P {UnionName} .trim()'을 사용해 보았지만 기쁨은 없었습니다. 보고서를 실행할 때 구문 오류가 발생합니다. –

+0

보고서에 전달하기 전에'UnionName'의 매개 변수 값을 자르십시오. –

관련 문제