2013-04-15 3 views
0

두 개의 필드 (ID와 NAME)가있는 간단한 보고서가 있습니다. 런타임시 사용자가 선택한 매개 변수에 따라 ID 또는 NAME별로 세부 정보를 정렬하려고합니다.iReport의 매개 변수에 따라 보고서 정렬

<sortField name="sort" type="Variable"/> 

<variable name="sort" class="java.lang.String"> 
    <variableExpression> 
     <![CDATA[$P{ord}.equals("name") ? $F{entity}.getName() : $F{entity}.getId().toString()]]> 
    </variableExpression> 
</variable> 

편집 : 1 :

내가 이런 일을 해봤 내가 매개 변수로 데이터 소스를 전달하고있어, 나는 JasperReports에에서 SQL 쿼리를 실행하지 않습니다. 나는 alasy가 JasperReports로 정렬 된 데이터 소스를 전달할 수 있다고 생각하지만 보고서에서 직접 데이터를 정렬하고 싶습니다.

EDIT 2 : 이전 코드를 검토 한 결과 제대로 작동합니다.

답변

0

"Sort_order"매개 변수를 기본값 "ID"로 만들고 쿼리의 order by 절을 추가하기 만하면됩니다.

SELECT... 
    FROM.. 
    ORDER BY $P!{Sort_order} DESC 
+0

당신은 열을 기준으로 정렬 세트 다음

SELECT id, name, (CASE WHEN $P!{Sort_order}='id' THEN id ELSE null END) sort_id, (CASE WHEN $P!{Sort_order}='name' THEN name ELSE null END) sort_name FROM your_table; 

JasperReports의 쿼리 – nailujed

0

SELECT에 ORDER BY 절을 사용할 수 있습니다. 그러나 때로는 내부화 또는 이와 유사한 이유로 재스퍼별로 데이터를 분류해야합니다. 이 문제를 해결하는 방법을 한 가지 방법은 그 (POSTGRESQL)처럼 정렬 특별한 열을 선택하는 것입니다 : 내가 SQL을 실행하지 않는 것을 언급하는 것을 잊었다 sort_namesort_id

관련 문제