Я новичок в 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.
Что я делаю неправильно? Надеюсь, кто-то может мне помочь и указать мне направление, где найти решение.