练习题第五题,下拉框多选无数据。

如图,XUEHAO为空的时候能够全部显示,单选或者多选就是空白的。

帮助文档里那个《下拉复选框实现多值查询》我试了,不行。

求解。

基础练习5.cpt

5.2.PNG

FineReport xianyu1991 发布于 2019-3-30 19:24 (编辑于 2019-3-30 20:14)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
5
InitLv5见习互助
发布于2019-4-2 12:30(编辑于 2019-4-2 12:33)

    看了你的模板,就应该是楼上说的数据集过滤的问题。我把我做的思路给你贴一下。

    首先,显示一个原始数据,那就是定义一个ds1,拖拽入报表。为了实现学生跟随班级变化,就指定学生上父格为班级。成绩由于地理原因会自动跟随名字输出。这个你应该知道。

1.jpg

    然后,想要实现下拉控件选择班级,下拉选项中的值来源于给控件指定的数据字典,而选择下拉值(班级)后想要影响主页面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的选项进行筛选。

1.jpg

1.jpg

最后要记住这里是可以多选,所以代码一定是in,而且一定要改变分隔符选项成','。

1.jpg

最后附上我的模板。

习题5.cpt






  • 用户36206671 用户36206671 你不用新建DS2和DS3,也可以实现学号随班级变动,因为当班级不为空的时候,这时已经对班级做出了筛选。亲测有效
    2020-04-20 23:12 
  • 用户36206671 用户36206671 另外,我没搞明白,为啥当前分割符号是‘,’,为啥不能直接是逗号,或者直接返回成数组形式呀
    2020-04-20 23:15 
  • Init Init 回复 用户36206671 因为我们在公式里写的是 A in (\'控件值\'),而这个控件值如果是B,C的话,那这条语句就变成A in (\'B,C\') 这就不能正确的筛出“A字段中值为B或C的记录”,而应该是A in (\'B\',\'C\'),所以我们的控件值要是 B\',\'C 的形式,所以分隔符要是\',\'
    2020-04-24 14:08 
  • 用户36206671 用户36206671 回复 Init 懂了,谢谢
    2020-04-24 15:11 
最佳回答
0
孤陌Lv6资深互助
发布于2019-3-30 19:57(编辑于 2019-3-30 20:08)

还你模板

1553945044178668 (1).cpt

主要是你有个数据集没有写过滤参数 还有的就是 主要这样弄了不用再设置过滤条件了


  • xianyu1991 xianyu1991(提问者) 你们的附件下下来都是内置数据集,看不见代码。。。。 还有你最后一句没看懂 。。。
    2019-03-30 20:12 
  • 孤陌 孤陌 回复 xianyu1991(提问者) 就是你 中间的数据集 加SQL过滤参数 和你其他数据集一样
    2019-04-01 10:17 
  • 6关注人数
  • 2232浏览人数
  • 最后回答于:2019-4-2 12:33
    请选择关闭问题的原因
    确定 取消
    返回顶部