Вычисленные числа с использованием javascript неправильно отображаются в интерактивном отчете

Я новичок в oracle apex и работаю над делом для себя, чтобы получить контроль над oracle apex 5... :-).... надеюсь. У меня есть 2 страницы: 1 интерактивный отчет по таблице и 1 для формы для добавления и изменения записей. В форме 4 поля: P12_VAT_PERC, P12_VAT_AMOUNT, P12_NET_AMOUNT и P12_TOT_AMOUNT (все 4 поля базы данных, тип число). Я создал одно динамическое действие, когда событие теряет фокус на одном из 4 элементов поля, упомянутых выше. Событие запускается, когда оно истинно, с двумя действиями. Действие 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.

Когда я снова открываю эту запись в форме для редактирования, она изначально отображается как в отчете, например, 259199999999999998. При изменении, т.е. P12_VAT_PERC, и изменении фокуса поле вычисляется правильно и отображается снова с десятичным знаком на правильном месте. После отправки снова ошибка. Чтобы решить эту проблему, я обнаружил, что динамическое действие также запускается при загрузке страницы (я включил эту опцию), и эта часть проблемы была решена. Значения отображаются правильно в форме javascript, но неправильное значение, похоже, хранится в базе данных и неправильно отображается в интерактивном отчете.

То же самое для P12_TOT_AMOUNT.

У меня есть идея, что APEX использует точку в качестве десятичного символа, но региональные настройки (голландский) машины, на которой работает браузер, установлены на запятую. Когда я ввожу запятую в качестве десятичного знака, вычисляемые поля отображаются как NaN.

Что я делаю неправильно? Надеюсь, кто-то может мне помочь и указать мне направление, где найти решение.


person juseit    schedule 26.12.2016    source источник
comment
Я разместил этот вопрос также в сообществе Oracle. Ответ, который я получил, заключается в том, что javascript всегда использует точку в качестве десятичного разделителя. Это объясняет мою проблему. Теперь я пытаюсь вернуть число с помощью javascript с десятичным разделителем локали, который является запятой. По крайней мере, я знаю, в чем проблема. Это не Apex, но проблема в слишком малом знании javascript. Я отмечаю этот вопрос как ответ и ищу решение реальной проблемы.   -  person juseit    schedule 02.01.2017


Ответы (1)


Настоящая проблема в том, что javascript всегда использует точку в качестве десятичного разделителя, а моя локаль установлена ​​​​на десятичную. Сейчас я сосредоточусь на этой проблеме. К апексу отношения не имеет.

person juseit    schedule 02.01.2017