问题描述
||
我必须使用用户输入参数创建一个Birt报告。就像当
仪表留空,应从表中获取所有值,否则当用户输入学生卷号时,应获取相应的数据。可以通过Birt报告完成此操作吗?如果是,请提出一个建议。
谢谢!
解决方法
是的,你可以这么做。如果参数是可选的,则不能使用数据集参数(查询中带有?),因为它将为null。相反,您必须使用JavaScript修改查询。
像往常一样创建一个报告参数,在本例中为'stud_no \'。然后在您的SQL中添加一个您可以肯定确定是唯一的注释,无论您希望在哪里插入子句,我都使用-$ stud_no $之类的注释。
然后在beforeOpen中将这样的脚本添加到您的数据集中:
if (params[\"stud_no\"].value){
this.queryText = this.queryText.replace(\"--$stud_no$\",\"and stud_no = \" + params[\"stud_no\"]);
}
当参数具有值时,它将用子句替换注释。您可以在搜索字符串中使用正则表达式,然后根据需要将其插入多个位置。
, 使用like语句创建参数
where students_roll_no like ?
使用文本框创建报告参数,默认值为%
因为百分比\'%\'是SQL通配符,所以它返回所有值。如果用户输入学生成绩编号,则仅返回该记录。此外,用户可以输入0500%并获取所有以0500开头的记录。