IbEvent

aliasbml
Messages postés
5
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
20 février 2014
- Modifié par jordane45 le 20/02/2014 à 22:59
jordane45
Messages postés
36029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2022
- 20 févr. 2014 à 22:51
Bonjour,

désolé car l'explication est très longue :
et bien pour mieux expliquer, par exemple j'ai une BDD "gestion stock" qui
contient les tables suivantes :
Article, Commande, Ligne_Commande
(sorties), Livraison et Ligne_Livraison (entrées),

Pour les entrées pas de problème, un Trigger qui fait l'Update Qtt_Stock dans la table Article, mais dans les sorties si par exemple Qtt_Commandee est
supérieure à Qtt_Stock dans la table Article, alors la commande
n'aura pas lieu, pour cela j'ai créé un Trigger ki vérifier cela et j'ai
ajouté une exception pour m'informer que la commande ne sera pas possible,
bien sur l'exception fait roolback du script en cours d'exécution,

voici le script :
/*Trigger qui vérifier si Qtt_Cmd est >= Qtt_Stock dans la table Article avant ajout d'une Commande dans la Table Ligne_Commande :*/ 

/*Création d'un exécption */ 
CREATE EXCEPTION Qtt_Stock_Ins 'Quantité en Stock Insuffisante !'; 

/*Création du Trigger qui vérifier et fait appel à l'exception créée précédemment*/ 
SET TERM^; 
CREATE TRIGGER VERIF_ARTICLE_QTT_CMD FOR LIGNE_COMMANDE 
ACTIVE BEFORE INSERT POSITION 0 
AS 
DECLARE VARIABLE Q_Stock SMALLINT; 
BEGIN 
SELECT Qtt_Stock FROM ARTICLE WHERE Code_Art=New.Code_Art INTO : Q_STOCK ; 
IF (New.Qtt_Cmd >= :Q_STOCK) THEN 
EXCEPTION Qtt_Stock_Ins; 
END^ 
SET TERM;^ 


après exécution en mode interactif sql et si la condition est vrai j'ai
le message de l'exception pas de problème!

Le problème si je veux gérer cela avec delphi7 à mon avis il y a pas
un composant qui gère ça!

un autre cas : si le stock est disponible alors le trigger s'exécute
mais supposant que le stock minimal est atteint si je crée un Trigger
qui vérifie cela avec une exception cela va poser problème, alors j'ai
ajouté un POST_EVENT dont voici le script :

/*Trigger qui informe si le stock minimal est atteint dans la table 
Article après une Commande dans la table Ligne_Commande :*/ 

/*Création du Trigger qui vérifier le stock mini et fait appel à l'exception créée précédemment*/ 
SET TERM^; 
CREATE TRIGGER VERIF_ARTICLE_QTT_MINI FOR LIGNE_COMMANDE /ARTICLE ? 
ACTIVE AFTER INSERT POSITION 5 
AS 
DECLARE VARIABLE Q_Stock_V SMALLINT; 
DECLARE VARIABLE Q_Stock_M SMALLINT; 

BEGIN 
SELECT Qtt_Stock FROM ARTICLE WHERE Code_Art=New.Code_Art INTO : Q_STOCK_V ; 
SELECT Stock_Min FROM ARTICLE WHERE Code_Art=New.Code_Art INTO : Q_STOCK_M ; 

IF (:Q_STOCK_V <= :Q_STOCK_M) THEN POST_EVENT 'Stock_Mini_Atteind'; 
END^ 
SET TERM;^ 


le problème sous interactif sql c'est que rien ne s'affiche (événement dans
trigger), mais avec Delphi7 il existe le composant IBEvent, à mon avis
il exploite les événements générés dans les Triggers,
mais lorsque je relie IBEvent avec la BDD Interbase
par exemple :
IF IBEvent1.Events:='Stock_Mini_Atteind' Then ShowMessage('Stk Mini') 

je n'ai aucun message!!!

encore merci et désolé car je sais que c'est une très longue explication.
je pense que j'ai tout expliqué.
S'il manque des choses vous me le dites.

merci.

---------------------------------------------------------------------
Edité par jordane45 : Ajout des balises de code, quelques corrections orthographiques et remplacement du langage sms par du vrai texte....

1 réponse

jordane45
Messages postés
36029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 août 2022
358
Modifié par jordane45 le 20/02/2014 à 23:04
Bonjour,

J'ai juste quelques remarques concernant la rédaction de ta question :
1 - Utilisation de la coloration syntaxique : voir ICI
PS:j'ai édité ton message pour ajouter les balises... penses-y lors de tes prochains messages.

2 - Utilisation du langage SMS : Il est demandé sur ce forum de limiter (voir de supprimer) l'utilisation du langage SMS..
Tu peux trouver le règlement du site ICI
PS: j'ai remplacé tous tes "g" par "j'ai" . .. "ki" par "qui" .."ke" par "que";. "pr" par "pour" ..et j'en passe. Merci de faire attention à la rédaction de tes messages.

Merci.
0