我在需要填写内容的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),因此导致了计算量过大,计算时间过长的问题。但是光看日志,只能看出程序执行了多次数据集查询,无法确认我的猜测,想找一个替代方案,解决目前单元格计算时,循环调用公式的情景。
|