Динамический расчет в табличной форме oracle apex: sys.htp.p
У меня есть табличная форма, где col1 и col2 являются числами, а col3 должен содержать разницу между col1 и col2.
У col1 уже есть данные, и col 1 доступен для редактирования, в зависимости от изменения в col1, данные col3 будут динамически изменяться.
Для достижения этого я использовал ajax callback
процесс и JavaScript
Но проблема в том, когда разница 0.xx
-0.xx
Я получаю ошибку разбора. другие значения я могу напечатать в col3.
Declare
p_curr number;
p_prev number;
p_diff number;
Begin
p_prev := to_number(apex_application.g_x01);
p_curr := to_number(apex_application.g_x02);
SELECT p_curr - p_prev into p_diff
from dual;
-- return calculated value
sys.htp.p(p_diff);
End;
--JavaScript
function f_CALC_DIFF(pThis) {
var row_id = pThis.id.substr(4);
var s = $('#f18_'+row_id).val().replace(/[^\d.-]/g, '');
var curr = $(pThis).val().replace(/[^\d.-]/g, '');
if(!s){
var s= 0;
var prev = s;}
else{
var prev = s;}
apex.server.process
( "CALC_DIFF", { x01: prev, x02: curr },
{ success: function( pData ) {
$('#f23_'+row_id).val(pData);}}
);
}
Пожалуйста, предложите решение для вышеуказанной проблемы.
я использую Oracle Apex version 4.2
1 ответ
Решение
Вместо использования дорогого вызова AJAX для базы данных, используйте JavaScript.
function f_CALC_DIFF(pThis) {
var row_id = pThis.id.substr(4);
var s = $('#f18_'+row_id).val().replace(/[^\d.-]/g, '');
var curr = $(pThis).val().replace(/[^\d.-]/g, '');
if(!s){
var s= 0;
var prev = s;}
else{
var prev = s;}
var diff = 0;
diff = (curr - prev);
var n = diff.toFixed(2);
alert (n);
$('#f23_'+row_id).val(n);
// Please remove the AJAX call to database.
/*apex.server.process
( "CALC_DIFF", { x01: prev, x02: curr },
{ success: function( pData ) {
$('#f23_'+row_id).val(pData);}}
);
} */