birt动态sql 传递参数
Birt参数在IN中的传递
我们在用Birt做报表开发时,有时需要给In传递参数,此时我们就不能用普通的参数传递方法,而需要做一定的处理。如有下面的SQL
select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score
from score s,subject sub
where s.subject_code = sub.subject_code
and s.stu_code in ('200232027601','200232027602')
and s.subject_code in (100001,100002)
需要把stu_code 和subject_code 作为参数从外面(页面)传递进来。其方法有:
第一种方法:
数据源的建立就省略了。重点是我们在建立数据集时直接在"Property Binding"中进行SQL拼装,即为:
this.queryText = "select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score from score s,subject sub"+
" where s.subject_code = sub.subject_code and s.stu_code in (" + params["stu_code"].value +
") and s.subject_code in ( "+params["subject_code"].value+ ")" ,如下图:
Birt参数IN中数据集.jpg
其中参数stu_code,subject_code和以前一样的建法。最后我们在浏览输入参数时如下图:
Birt参数结果.jpg
第二种方法,其实与第一种是大同小异,总体思路就是拼SQL,
最后只需要对SQL进行拼装,点中相应的DataSet,在Script中写相应的脚本,如:this.queryText = this.queryText + " ("+ params["stu_code"].value +")" + " and s.subject_code in ("+params["subject_code"].value + ")",预览与上面的一样,就不重复了,到此,在In中传递参数就结束了。希望对大家有所帮助。