如题。
比如一个数据集呗被多个报表块引用,
单个报表快内不同单元格设置不同的过滤条件、且单元格直接没设置父格
等等情况,数据集会执行多次吗
数据集何时会执行?- FineReport帮助文档 - 全面的报表使用教程和学习资料
如果用了比如value与ds1类似的函数。或者map的函数。它会调用多次。
一、核心执行机制
触发条件
仅当报表单元格直接绑定数据集字段或被计算引用时,数据集才会执行
未使用的数据集不会执行(如定义但未在模板中引用)
执行次数
若过滤条件在数据集SQL中定义(如WHERE子句),执行时直接按条件查询,结果集已过滤。
若过滤在报表层设置(如单元格过滤属性),则基于已缓存的数据集结果进行本地筛选,不会重新执行查询。
同一数据集仅执行一次:即使被多个报表块、单元格引用,或设置不同过滤条件,数据集仅首次被引用时执行一次,后续直接复用缓存结果。
过滤条件差异的处理:
二、特殊场景分析
多个报表块引用同一数据集
仅触发一次数据库查询,结果集共享给所有报表块使用。
单元格独立过滤且无父格关系
不影响数据集执行次数(仍执行一次),不同单元格的过滤操作均在本地缓存结果上处理。
父子格设置的影响
父格仅影响报表计算顺序和扩展逻辑,不改变数据集执行次数。
三、需注意的例外情况
程序数据集
自定义程序数据集需确保逻辑中不重复执行查询,否则可能因代码设计不当导致多次调用6。
参数联动刷新
若参数变化触发数据集重新加载(如参数作为SQL条件),会重新执行查询
之前测过决策报表的数据集再多个报表块使用确实可能存在重复执行问题。
数据集运行时间较久,建议设置缓存防止执行多次
--
如果实际不需要缓存功能可以将时间设定少一点,单纯防重复执行