拓展格相对层次坐标相乘再求和后填报提交数据异常变化

FR9.0,在数据拓展之后使用相对层次坐标使两列数据两两相乘后再求和,得出的数据报表显示正确,再提交至MYSQL数据库之后数据却发生变化。

如:

下图中,报表展示中计算得出的1.5加权平均价格在报表展现中是正确的,但提交至数据库后该项却变成了其他更小的数额,已尝试过修改数据库数据类型,已排除填报属性单元格设置错误等可能,目前问题定位于使用层次坐标做类似的两个数组各元素相乘后求和就会出现此情况,单独的层次坐标求和填报则无异常。

1578713057(1).png

FineReport ayuycz 发布于 2020-1-11 11:20 (编辑于 2020-1-11 11:26)
1min目标场景问卷 立即参与
回答问题
悬赏:9 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
ayuyczLv2见习互助
发布于2020-1-13 16:44

经观察发现,计算结果单元格加入文本控件,使用鼠标点击后再失焦(单元格左上角出现红三角即进入编辑后状态)后,填报提交的内容则无异常。

目前的解决方案为:

在需要填报的列头加一个按钮控件,按钮中设置点击JS事件。通过点击按钮,将相对层次坐标计算出的结果传递给填报单元格,再填报提交后数据则为正常。JS如下:


var location = this.options.location;  //获取当前控件的位置

var cr = FR.cellStr2ColumnRow(location);//将本控件的位置类/对象?信息赋给cr

var col = cr.col;  //当前控件列号

var ro = cr.row;  //当前控件行号

for (var i = 1; i < 80; i++) {

//此处80为需要计算的行数,实际根据需要自行设置或使用函数带参计算,这里偷懒直接写了80

try{

var ans = contentPane.getWidgetByCell(FR.columnRow2CellStr({col: col+26, row: ro+i}));

        //此处col+26,  ro+i的位置即为相对层次坐标计算出结果的初始位置,可根据实际自行修改或函数带参

contentPane.setCellValue(col,ro+i,ans.getValue());

        //将结果由初始位置传递给 col,ro+i 即填报列的对应位置

}

catch(err){

}

}

非前端,不太熟悉JS和对应的FR对象方法,逻辑上应该可以直接在计算答案的单元格上页面初始化后模拟点击再失焦操作以解决此问题。

本问题会再次提问悬赏,希望能有更好的解决方案

  • 0关注人数
  • 557浏览人数
  • 最后回答于:2020-1-13 16:44
    请选择关闭问题的原因
    确定 取消
    返回顶部