看了你的模板,就应该是楼上说的数据集过滤的问题。我把我做的思路给你贴一下。
首先,显示一个原始数据,那就是定义一个ds1,拖拽入报表。为了实现学生跟随班级变化,就指定学生上父格为班级。成绩由于地理原因会自动跟随名字输出。这个你应该知道。
然后,想要实现下拉控件选择班级,下拉选项中的值来源于给控件指定的数据字典,而选择下拉值(班级)后想要影响主页面ds1输出,则新建一个ds2,用来给控件提供下拉选项。
之后为了让classno控件对输出有选择作用,我们在ds1中加上${if(len(classno)=0,"","and CLASSNO='"+classno+"'")} 语句以实现选择(第一个控件的名称classno),这样,在输出ds1中数据时,就会根据classno控件的选项进行一个筛选。
然后就是下拉复选,下拉复选要想有选项,依然依靠数据字典,所以新建一个ds3,为了实现复选框选项根据下拉框变化而变化,在ds3中SELECT * FROM STSCORE where CLASSNO='${classno}' 这样复选框的选项就会根据classno的选项而变化,而为了下拉复选框影响ds1输出,所以依照上面一样的方法,再在ds1中写
${if(len(studentno)=0,"","and STUDENTNO in ('"+studentno+"')")},这样,在输出ds1中数据时,就会根据studentno控件的选项进行一个筛选。结合上两步,就实现了输出的ds1要同时根据classno和studentno的选项进行筛选。
最后要记住这里是可以多选,所以代码一定是in,而且一定要改变分隔符选项成','。
最后附上我的模板。
习题5.cpt