永洪社区

标题: 富文本相关的需求首先 [打印本页]

作者: odanobunaga    时间: 2022-2-15 14:37
标题: 富文本相关的需求首先
现在的解决方案:
步骤:
1.从报表中拖拉一个文本组件,然后将文本组件过滤成需要的数值,并设置位不可见
2.getViewData("b");param['money']=b.data;脚本中获取到相应的值
3.富文本中加入参数?{b}


以上实现方法不够灵活,希望能够能灵活的方式,可能报表中不会存在其他的图表来取值,所以
更希望能够在数据集中实现


需求:
富文本能够不需要脚本的方式直接从数据集中取到相应的值。




作者: _贝贝    时间: 2022-2-15 14:47
可以使用execute函数去获取到数据集的一个结果,您是想直接将结果赋值给富文本组件吗
作者: _贝贝    时间: 2022-2-15 14:52
execute直接获取数据集可以参考这个帖子,将获取的值赋值给参数后在富文本使用?{参数名}引用
https://club.yonghongtech.com/fo ... 0%E8%B5%8B%E5%80%BC
作者: odanobunaga    时间: 2022-2-15 15:34
永洪tech-Muse 发表于 2022-2-15 14:52
execute直接获取数据集可以参考这个帖子,将获取的值赋值给参数后在富文本使用?{参数名}引用
https://club. ...

请问我想实现 获取 某个字段的最大值或者sum这样的聚合呢
作者: _贝贝    时间: 2022-2-15 16:58
odanobunaga 发表于 2022-2-15 15:34
请问我想实现 获取 某个字段的最大值或者sum这样的聚合呢

您好,目前不能够直接用脚本去获取数据集列中的最大值或者sum函数
作者: _贝贝    时间: 2022-2-15 17:49
本帖最后由 永洪tech-Muse 于 2022-2-15 17:51 编辑
odanobunaga 发表于 2022-2-15 15:34
请问我想实现 获取 某个字段的最大值或者sum这样的聚合呢

可以自己编写js脚本逻辑来获取最大最小值,例如
var a = execute(this, SQL, "咖啡中国市场销售数据");



param['max']=a.get(1,1)      //给参数设置默认值为第一个数据,a.get(1,1)表示获取第2行第2列的数据,表格行列数从0开始计算,根据数据所在行列数自行修改即可
param['min']=a.get(1,1)       //给参数设置默认值为第二个数据
for(var i=0;i<a.size();i++){
if(a.get(i,1)>param['max']){
param['max']=a.get(i,1)     //获取最大值作为参数max
}
if(a.get(i,1)<param['min']){
param['min']=a.get(i,1)      //获取最小值作为参数min
}
}
debug(param['max'])   //最大值
debug(param['min'])  //最小值


注意:数据量大的情况下不建议循环获取,可能会影响报告性能
作者: odanobunaga    时间: 2022-2-16 09:53
永洪tech-Muse 发表于 2022-2-15 17:49
可以自己编写js脚本逻辑来获取最大最小值,例如
var a = execute(this, SQL, "咖啡中国市场销售数据");

这个数据量大的话,不大好搞啊。。。除了for循环就没有其他方式来取了吗?

作者: 永洪tech-Bella    时间: 2022-2-16 09:55
odanobunaga 发表于 2022-2-16 09:53
这个数据量大的话,不大好搞啊。。。除了for循环就没有其他方式来取了吗?
...

sql数据集处理呢,比如要取最大值,最小值,用sql直接处理,查到数据集中的就直接是最大值,最小值
作者: _贝贝    时间: 2022-2-16 09:57
odanobunaga 发表于 2022-2-16 09:53
这个数据量大的话,不大好搞啊。。。除了for循环就没有其他方式来取了吗?
...

目前没有其他函数最大最小值直接取的方式,您之前的文本组件通过过滤获取值得方式是比较好计算数值的,单纯取数的话使用脚本方便一点,但是涉及取数后的部分计算还是建议您使用文本组件
作者: odanobunaga    时间: 2022-2-16 10:04
永洪tech-Bella 发表于 2022-2-16 09:55
sql数据集处理呢,比如要取最大值,最小值,用sql直接处理,查到数据集中的就直接是最大值,最小值 ...

你好,请问你的方法我没太理解,是直接以  sum(xx),max(xx)函数这样将需要的值算出来,然后在拖到报表中使用吗,这种我理解还是需要文本组件来将值获取后传到对应的参数中呢
作者: odanobunaga    时间: 2022-2-16 10:05
永洪tech-Muse 发表于 2022-2-16 09:57
目前没有其他函数最大最小值直接取的方式,您之前的文本组件通过过滤获取值得方式是比较好计算数值的,单 ...

嗯嗯,直接使用脚本来获取文本组件,图表组件的值的这种方法是理解的,就是可能领导会不想看到对应的图表,只想看到富文本中汇报的结果,所以还需要隐藏掉相关的图表文本,比较繁琐,才想的有没有其他方法能直接从数据集中将需要的数取出来
作者: _贝贝    时间: 2022-2-16 10:17
odanobunaga 发表于 2022-2-16 10:05
嗯嗯,直接使用脚本来获取文本组件,图表组件的值的这种方法是理解的,就是可能领导会不想看到对应的图表 ...

嗯嗯,明白您的场景和需求了,感谢您的宝贵意见,咱们会及时反馈
作者: 永洪tech-Bella    时间: 2022-2-16 10:24
odanobunaga 发表于 2022-2-16 10:04
你好,请问你的方法我没太理解,是直接以  sum(xx),max(xx)函数这样将需要的值算出来,然后在拖到报 ...

不想要表格,但是要表格计算后某些格子的数据,就可以考虑将表格的计算,转换为sql计算,在sql数据集得到,然后用脚本直接获取。相对于之前获取数据集的明细,再进行聚合(sum,max),这里的差别是sum,max再sql中做,脚本只是从sql数据集取数,作为参数,显示在文本中
作者: odanobunaga    时间: 2022-2-16 11:08
永洪tech-Bella 发表于 2022-2-16 10:24
不想要表格,但是要表格计算后某些格子的数据,就可以考虑将表格的计算,转换为sql计算,在sql数据集得到 ...

你好,我这里思路有点没跟上,我先说下我的理解:
select   sum(金额) from  xxx  where 1=1 <year>"年"=?{year}</year>,
比如这种我要求一个  2021年的 总销售额,那我这里则需要  将  year 的参数设置位  2021,
这样就可以取到2021年了,但是我富文本中 如果要取到  year过滤后的sum金额,还是需要一个
文本组件来获取到sum金额把
作者: _贝贝    时间: 2022-2-16 12:28
odanobunaga 发表于 2022-2-16 11:08
你好,我这里思路有点没跟上,我先说下我的理解:
select   sum(金额) from  xxx  where 1=1 "年"=?{y ...

如果有其他过滤条件并且是实时变化,先看下数据集设置过滤是否满足,满足后如果只是引用sql筛选后的值就直接使用execute。不满足过滤还是需要用文本组件
作者: odanobunaga    时间: 2022-2-16 16:13
永洪tech-Muse 发表于 2022-2-16 12:28
如果有其他过滤条件并且是实时变化,先看下数据集设置过滤是否满足,满足后如果只是引用sql筛选后的值就 ...

嗯嗯,确实没其他的实现方法的话,也没办法,先这样吧
作者: _贝贝    时间: 2022-2-16 16:23
odanobunaga 发表于 2022-2-16 16:13
嗯嗯,确实没其他的实现方法的话,也没办法,先这样吧

      




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4