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;