小数据量填报,报表卡死

我在需要填写内容的5个单元格内填入了如下公式:
if(ISNULL(VALUE("生管排程维护",16,1,A2)),if(ISNULL(M2),NULL,DATEDELTA(M2,4)),VALUE("生管排程维护",16,1,A2))
用来实现指定需求,结果提交5笔记录后(共25个日期),页面失去响应。
我实现的需求是:用户往5个栏位中填入工序1完成日期,工序2完成日期,工序3完成日期.......并且系统要帮助用户自动推算各个工序的日期(例如:工序1+3天=工序2完成日期;工序2+4天=工序3完成日期);如果数据库中已有相应的工序日期,则显示数据库中的值,不根据前一道工序日期进行推算;
目前写的公式大致实现了功能,但是提交2条记录(10个日期数据)时,看log,发现后台进行了10次查询数据集的操作。


我经过测试,找到了疑似问题原因的地方,但是没什么解决的思路。我举例的公式写在N2单元格中作为初始值,finereport在提交Q2(N2的下一个工序完成日期)时,实际提交的值是Q2内的公式DATEDELTA(N2,-4),并不是单元格上显示的计算结果YYYY/MM/DD,因此在提交Q2时,程序再次计算公式DATEDELTA(N2,-4),并且在计算时获取N2的值时,获取到了N2单元格内,我写入的公式DATEDELTA(M2,-3),因此导致了计算量过大,计算时间过长的问题。但是光看日志,只能看出程序执行了多次数据集查询,无法确认我的猜测,想找一个替代方案,解决目前单元格计算时,循环调用公式的情景。
image.png

FineReport qianxu1996 发布于 2018-12-10 13:41 (编辑于 2018-12-10 16:36)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
孤陌Lv6资深互助
发布于2018-12-10 13:54

天数是固定的规律??

  • qianxu1996 qianxu1996(提问者) 是的,工序耗时基本确定,偶尔出现特殊情况时,用户可以修改系统自动推算出的日期(我给单元格添加了日期控件,单元格初始值用上述公式获取)
    2018-12-10 14:11 
最佳回答
0
snrtuemcLv8专家互助
发布于2020-9-23 08:47

看你情况,以及你自己分析,是多次引用循环计算,导致页面卡死引起,你的计算全部在前端,而且每一次都查询数据库,引起浏览器奔溃了

可以的话,建议提交一次,重新刷新下页面来解决,只是意见,也比较麻烦

  • 3关注人数
  • 491浏览人数
  • 最后回答于:2020-9-23 08:47
    请选择关闭问题的原因
    确定 取消
    返回顶部