나는 유니온 멤버쉽에 기반한 엔트리리스트를 반환하는 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}
...
곳 StartDate
및 EndDate
유형 java.lang.Date
을 가지고 UnionName
이 java.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는 는
이 좋아 고정되지, 그래서 위의 솔루션은 내가 필요로하는 매우 것이 아니다; 단지 전달 된 것이 아니라 기본값으로 만 대체됩니다.
날짜가 작동하는 이유는 무엇입니까? 아니요, 조합 번호는입니까? 매개 변수의 값이 데이터베이스의 문자 (문자)의 문자와 정확히 일치하는지 확인했습니다.
쿼리에서'$ P {UnionName} .trim()'을 사용해 보았지만 기쁨은 없었습니다. 보고서를 실행할 때 구문 오류가 발생합니다. –
보고서에 전달하기 전에'UnionName'의 매개 변수 값을 자르십시오. –