cpt报表刷新时是否会把所有的【模板数据集、服务器数据集】都执行一遍?

前辈们好,请教个问题,提前感谢。

cpt报表刷新时是否会把所有的【模板数据集、服务器数据集】都执行一遍?

无论其是否有字段拖拽到报表中参与计算?

有时候为了方便查看通用SQL,cpt模板中会挂一些常用的数据集,没有删除。

担心会影响前端的执行效率。

FineReport 冥王星 发布于 2024-9-11 10:23
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
1
超级无敌小熊蛋Lv5初级互助
发布于2024-9-11 10:24(编辑于 2024-9-11 15:37)

在 FineReport 中,普通报表(cpt)刷新时,并不会把所有的【模板数据集、服务器数据集】都执行一遍。只有那些在报表中实际被使用到的字段才会被执行。

建议优化数据集,可以使用帆软的函数和sql结合的方法,来写数据集。

image.png

image.png

这段IF(蓝色的)这么用,起到的是一个注释的效果。

上下都有

IF

  • 冥王星 冥王星(提问者) 前辈好。 有些数据集的字段没有拖拽到报表中参与计算。 这种情况下,前端用户在刷新报表时,这些数据集也会被执行吗?
    2024-09-11 11:27 
  • 超级无敌小熊蛋 超级无敌小熊蛋 回复 冥王星(提问者) FineReport在预览报表时,只有计算用到数据集的单元格才会执行数据集。例如,如果单元格B3中绑定了数据列,报表预览时执行到B3单元格时才会执行数据集,此时会创建一个数据连接,数据集执行完毕后,连接会自动释放。 因此,如果某些数据集的字段没有被使用到报表中,那么在前端用户刷新报表时,这些数据集不会被执行。
    2024-09-11 11:48 
  • 超级无敌小熊蛋 超级无敌小熊蛋 回复 冥王星(提问者) 可以试着使用帆软函数和SQL结合的方法,来优化数据集。 举个例子开头写${if(id=1,/*,"")} 结尾写:${if(id=1,*/,"")} 这么写,可以把ID=1的时候的sql去掉了,这样在数据集里就运行的快了,很多帆软的函数用在数据集里很方便的。
    2024-09-11 11:49 
  • 冥王星 冥王星(提问者) 回复 超级无敌小熊蛋 ${if(id=1,/*,"")} 前辈好。 这种写法是什么意思? 如果ID=1,则 /*,否则为空? 是不是被页面给强制转换了某些字符表示方式? 问答版块中针对楼层的回复,某些格式(回车换行符)会消失。 我之前向官方多次反馈过,都没有回应。
    2024-09-11 14:17 
  • 超级无敌小熊蛋 超级无敌小熊蛋 回复 冥王星(提问者) 我只不过是想回答您题目中的问题,这个方法呢只是优化SQL的一种思路。
    2024-09-11 15:39 
  • 2关注人数
  • 169浏览人数
  • 最后回答于:2024-9-11 15:37
    请选择关闭问题的原因
    确定 取消
    返回顶部