Skip to Main Content

Oracle Forms

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Error FRM - 41039 Alert ID 0 invalid.

Hello everyone,
I'm trying to run a form with a validate button that has the following plsql code.
But every time I try to click on the button in question I get an error FRM - 41039 Alert ID 0 invalid.
Can you help me? Thank you

DECLARE
CURSOR c_num_cli IS
SELECT dernier_num
FROM agence
WHERE code_agence = :client.code_agence
FOR UPDATE OF dernier_num;

num_cli_rec c_num_cli%ROWTYPE;
al_bouton NUMBER;
var_fictive NUMBER;
wnum NUMBER(6);
crad VARCHAR2(9);
num_cle NUMBER(2);
BEGIN
-- Affiche une boîte de dialogue de confirmation avec un bouton
al_bouton := show_alert('conf');

-- Vérifie si l'utilisateur a cliqué sur le bouton de confirmation
IF al_bouton = ALERT_BUTTON1 THEN

-- Ouvre un curseur pour récupérer des données du client
OPEN c_num_cli;

-- Récupère une ligne de données du curseur
FETCH c_num_cli INTO num_cli_rec;

-- Vérifie si des données ont été trouvées
IF c_num_cli%FOUND THEN
-- Initialise le numéro de client en fonction du dernier numéro trouvé dans la base de données
wnum := NVL(num_cli_rec.dernier_num, 0) + 1;

 -- Boucle tant que le client avec le numéro généré existe déjà  
 LOOP  
   -- Construit le numéro de client en concaténant le code de l'agence avec wnum  
   :client.numero\_client := TO\_NUMBER(TO\_CHAR(:client.code\_agence) || LPAD(wnum, 6, '0'));

   -- Vérifie si le client existe déjà  
   EXIT WHEN procedures.client\_existe(:client.numero\_client) = 0;

   -- Incrémente wnum  
   wnum := wnum + 1;  
 END LOOP;

 -- Attribue une clé au client  
 crad := TO\_CHAR(:client.code\_agence) || LPAD(wnum, 6, '0');  
 crad := RTRIM(crad);  
 num\_cle := procedures.attribution\_cle(crad);

 -- Si la clé est supérieure à 9, effectue une transformation  
 IF num\_cle > 9 THEN  
   LOOP  
     crad := RTRIM(TO\_CHAR(num\_cle));  
     num\_cle := TO\_NUMBER(SUBSTR(crad, 1, 1)) + TO\_NUMBER(SUBSTR(crad, 2, 1));  
     EXIT WHEN num\_cle \<= 9;  
   END LOOP;  
 END IF;

 -- Attribue la clé au client  
 :client.cle := num\_cle;

 -- Met à jour le dernier numéro dans la table de l'agence  
 UPDATE agence SET dernier\_num = wnum WHERE CURRENT OF c\_num\_cli;  
 COMMIT;

 -- Affiche un message d'alerte avec les informations générées  
 SET\_ALERT\_PROPERTY('alerte', ALERT\_MESSAGE\_TEXT, 'Le radical du client est ' ||  
                     TO\_CHAR(:client.code\_agence) || LPAD(wnum, 6, '0') ||  
                     ' la clé est ' || TO\_CHAR(:client.cle));  
 var\_fictive := SHOW\_ALERT('alerte');

 -- Nettoie les messages et affiche le bloc 'client'  
 CLEAR\_MESSAGE;  
 GO\_BLOCK('client');  
 CLEAR\_BLOCK;

END IF;

ELSE
-- Affiche un message d'alerte si l'opération est abandonnée
SET_ALERT_PROPERTY('alerte', ALERT_MESSAGE_TEXT, 'Opération abandonnée!!');
var_fictive := SHOW_ALERT('alerte');

END IF;
END;

This post has been answered by Michael Ferrante-Oracle on Feb 27 2024
Jump to Answer
Comments
Post Details
Added on Feb 27 2024
2 comments
216 views