Please help me to pass a input parameter in my report so that i can use a multi select query with the use of parameter.
In my report i am using $x{IN,ADMIN1,admins}
but getting
error: wrong type java.lang.string for parameter admins, admins should be an array or collection.
Mysql query:
Select ADMIN1,WEEK1,WEEK2,WEEK3,(((WEEK3-WEEK2)/WEEK2)*100) as percentage_change, (WEEK3-
WEEK2) as MSU_Difference,SUMWEEK2,SUMWEEK3,SUMWEEK,WEEK4,WEEK5,(((WEEK5-WEEK4)/WEEK4)*100)
as percentage_change_PRE,admin,ORGNo,OrgAbbr,msus from ((select admin as ADMIN1, sum(msu)
as WEEK1 from sccp_raw where dt >= date_sub(date($P{start_date}), INTERVAL 14 DAY) and dt
< date_sub(date($P{end_date}), INTERVAL 13 DAY) group by admin order by WEEK1) as
q1,(select admin as ADMIN2, sum(msu) as WEEK2 from sccp_raw where dt >=
date_sub(date($P{start_date}), INTERVAL 7 DAY) and dt < date_sub(date($P{end_date}),
INTERVAL 6 DAY) group by admin order by WEEK2) as q2,(select admin as ADMIN3, sum(msu) as
WEEK3 from sccp_raw where dt between $P{start_date} and $P{end_date} group by admin order
by WEEK3) as q3,(select sum(msu) as SUMWEEK2 from sccp_raw where dt >=
date_sub(date($P{start_date}), INTERVAL 7 DAY) and dt < date_sub(date($P{end_date}),
INTERVAL 6 DAY))as q4,(select sum(msu) as SUMWEEK3 from sccp_raw where dt >=
date_sub(date($P{start_date}), INTERVAL 14 DAY) and dt < date_sub(date($P{end_date}),
INTERVAL 13 DAY))as q5,(select sum(msu) as SUMWEEK from sccp_raw where dt BETWEEN
$P{start_date} and $P{end_date})as q6,(select sum(msu) as WEEK4 from sccp_raw where dt >=
date_sub(date($P{start_date}), INTERVAL 372 DAY) and dt < date_sub(date($P{end_date}),
INTERVAL 371 DAY)) as q7,(select sum(msu) as WEEK5 from sccp_raw where dt >=
date_sub(date($P{start_date}), INTERVAL 365 DAY) and dt < date_sub(date($P{end_date}),
INTERVAL 364 DAY)) as q8,(select sum(msu) as MSU from sccp_raw where dt between
$P{start_date} and $P{end_date}) as q9,(select a.dt,a.admin,b.ORGNo, b.OrgAbbr, sum(a.msu)
as msus from sccp_raw a left join (select ORGNo, ADMINS, OrgAbbr from orig) b on
a.admin=b.ADMINS where a.dt between $P{start_date} and $P{end_date} group by a.admin)as
q10) where $X{IN,ADMIN1,admins} and ADMIN1=ADMIN3 and ADMIN2=ADMIN3 and admin=ADMIN3
group by ADMIN1 order by WEEK3 desc;
The parameter's configuration:
parameter "admins":
class: `java.util.Collection`
Default Value Expression: "select admin from sccp_raw group by admin"
Also help me to know if i want to create this dropdown to be selected as "all admins" followed by admins list.
In the case of multiselect parameter of Collection type and you do not need to give "All" to select all the values in iReport as default value for that parameter by default it means all the values are selected.
But if the parameter is single select then the query for jasperreport server input control will be to get "All" in input control values : -
and iReport Query Will be : -
For Example see this report using Sample HSQL database in ireport:-
For mor detail you can visit my blog