使用javascript计算的数字在交互式报告中未正确显示

时间:2016-12-26 13:01:31

标签: javascript oracle-apex-5

我是oracle apex的新手,为自己设计了一个案例来让oracle apex 5更加控制......: - )....希望如此。我有2页:1个表上的交互式报告,1个表单,用于添加和修改 记录。在表单中有4个字段:P12_VAT_PERC,P12_VAT_AMOUNT,P12_NET_AMOUNT和P12_TOT_AMOUNT(所有4个数据库字段,类型编号)。我已经创建了一个关于事件失去焦点的动态操作,关注上面提到的4个字段项之一。当有2个动作时,该事件被触发。操作1在P12_VAT_AMOUNT上设置值,设置类型javascript表达式:

($v('P12_VAT_PERC') / 100) * $v('P12_NET_AMOUNT');

动作2在P12_TOT_AMOUNT上设置值,设置类型javascript表达式:

parseFloat($v('P12_NET_AMOUNT'))+parseFloat(($v('P12_VAT_PERC') / 100) * $v('P12_NET_AMOUNT'));

在形式上有效。 P12_VAT_AMOUNT和P12_TOT_AMOUNT的值将在失去对4个字段之一的焦点后计算并正确显示为数字(带小数,如果适用)。但是,当提交页面时,报告中的值无法正确显示,也无法正确存储在数据库中。即在提交P12_VAT_AMOUNT之前,计算并显示为25.919999999999998。在报告中提交后,显示为25919999999999998.我缺少小数符号。同样在数据库中,它的存储方式与2.592E16类似。

当我再次在表格中打开此记录进行编辑时,它最初显示在报告中,如25919999999999998.当更改即P12_VAT_PERC并更改焦点时,该字段会正确显示,并在正确位置再次显示十进制符号。提交后再次出错。为了解决这个问题,我发现在页面加载时也启动了动态操作(我启用了此选项),这部分问题得以解决。通过javascript在表单中正确显示值,但错误的值似乎存储在数据库中,并且未在交互式报告中正确显示。

P12_TOT_AMOUNT的行为相同。

我认为APEX使用点作为十进制字符,但运行浏览器的机器的区域设置(荷兰语)设置为逗号。当我输入逗号作为十进制符号时,计算的字段显示为NaN。

我做错了什么?希望有人可以帮助我,并指导我在哪里找到解决方案。

1 个答案:

答案 0 :(得分:0)

javascript使用的真正问题是一个点作为小数点分隔符,我的语言环境设置为十进制。我现在将重点关注这个问题。它与Apex无关。