2016-01-08 1 views
3

J'ai une forme tabulaire où col1 et col2 sont des nombres, et col3 devrait contenir la différence entre col1 et col2.Calcul dynamique dans oracle apex tabulaire: sys.htp.p

col1 a déjà reçu des données et la colonne 1 est modifiable, en fonction du changement de col1, les données col3 changeront dynamiquement.

Pour y parvenir, je l'ai utilisé processus ajax callback et JavaScript, mais le problème est lorsque la différence est 0.xx-0.xx, je reçois erreur d'analyse. autres valeurs Je suis en mesure d'imprimer en 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);}} 
);  
} 

S'il vous plaît suggérer la solution pour le problème ci-dessus.

J'utilise Oracle Apex version 4.2

+0

Quelle erreur d'analyse exactement, et où? Pourquoi utiliser to_number ici quand value est déjà un nombre: 'to_number (p_curr - p_prev)'? Vous devriez être capable de calculer la différence entre 2 nombres en Javascript, sans avoir besoin d'un appel AJAX cher à la base de données. –

+0

Erreur d'analyse: Erreur de syntaxe, jeton inattendu. Le problème est que je souhaite imprimer la valeur dans col3 de façon dynamique en fonction des modifications apportées dans col2 car il s'agit d'une colonne modifiable. La valeur de col3 est (col2-col1) J'ai donc utilisé l'appel Ajax à la base de données. – ApexDev

Répondre

3

Au lieu d'utiliser AJAX appel coûteux à base de données, utilisez 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);}} 
);  
} */