Que cherches tu exactement avec les triggers ?
La doc PC-Soft donne de bonnes directions !
Explique !
Moi je l'utilise pour mettre à jour chaque enregistrement dans tout fichier de ma BDD (Date et heure de mise à jour, utilisateur, IP, PC-Name)
Le champ d'application est très vaste.
A toi de jouer !
-
Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !Rejeter la notice
Trigger hfsql CS
Discussion dans 'Base de donnés & HFSQL' créé par elghyati, Mar 29, 2018.
Tags:
Que cherches tu exactement avec les triggers ?
La doc PC-Soft donne de bonnes directions !
Explique !
Moi je l'utilise pour mettre à jour chaque enregistrement dans tout fichier de ma BDD (Date et heure de mise à jour, utilisateur, IP, PC-Name)
Le champ d'application est très vaste.
mais comment SVP?
meci avantCliquez pour agrandir...
SALUT,
J’explique
Je veux utiliser les trigger pour mise à jour des stocks, par exemple :
J’ai un bon de livraison avec maitre et détails.
Dans le cas d’ajouter un nouveau BL :
qté de stock d’un article = qté existe d’un article – qte BL
Dans le cas de modification un BL :
Avant modification :
qté de stock d’un article = qté existe d’un article + qte BL
Après modification :
qté de stock d’un article = qté existe d’un article - qte BL
Question :
Comment appliquer les trigger pour obtenir même résultats ?
Comment récupérer le N° d’article pour utiliser dans trigger ?
Pour le cas Ajout et suppression ligne BL
Code (Text):PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()
QUAND EXCEPTION DANS
SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
RENVOYER Faux
FIN
FIN
SELON Majuscule(H.Action)
CAS "A" // Trigger Avant
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
CAS "HSUPPRIME"
FIN
CAS "P" // Trigger Avant
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
SI HTrouve() ALORS
SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
ARTICLE_STOCK.QT_VEN += {MonFichier+".QT"}
ARTICLE_STOCK.ST_PHY -= {MonFichier+".QT"}
ARTICLE_STOCK.QT_SORT += Abs({MonFichier+".QT"})
HModifie(ARTICLE_STOCK)
FIN
SINON
GOTO FIN_TRAIT
FIN
CAS "HSUPPRIME"
HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
SI HTrouve() ALORS
SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
ARTICLE_STOCK.QT_VEN -= {MonFichier+".QT"}
ARTICLE_STOCK.ST_PHY += {MonFichier+".QT"}
ARTICLE_STOCK.QT_SORT -= Abs({MonFichier+".QT"})
HModifie(ARTICLE_STOCK)
FIN
SINON
GOTO FIN_TRAIT
FIN
FIN
FIN
FAIRE
FIN_TRAIT:
pLogErreur("PS_BON_LIVRAISON_COM_MAJ_STOCK")
HModifie(ECHEC)
FIN
elghyati apprécie ceci.
Pour le cas Ajout et suppression ligne BL
Code (Text):PROCEDURE PS_BON_LIVRAISON_COM_MAJ_STOCK()
QUAND EXCEPTION DANS
SI PAS HFichierExiste(ARTICLE_STOCK) ALORS
SI PAS HDéclareExterne("ARTICLE_STOCK.FIC", "ARTICLE_STOCK") ALORS
RENVOYER Faux
FIN
FIN
SELON Majuscule(H.Action)
CAS "A" // Trigger Avant
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
CAS "HSUPPRIME"
FIN
CAS "P" // Trigger Avant
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
SI HTrouve() ALORS
SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
ARTICLE_STOCK.QT_VEN += {MonFichier+".QT"}
ARTICLE_STOCK.ST_PHY -= {MonFichier+".QT"}
ARTICLE_STOCK.QT_SORT += Abs({MonFichier+".QT"})
HModifie(ARTICLE_STOCK)
FIN
SINON
GOTO FIN_TRAIT
FIN
CAS "HSUPPRIME"
HLitRecherchePremier(ARTICLE_STOCK,COD_ART,{MonFichier+".COD_ART"},hBlocageEcriture)
SI HTrouve() ALORS
SI ARTICLE_STOCK.SANS_STOCK = Faux ALORS
ARTICLE_STOCK.QT_VEN -= {MonFichier+".QT"}
ARTICLE_STOCK.ST_PHY += {MonFichier+".QT"}
ARTICLE_STOCK.QT_SORT -= Abs({MonFichier+".QT"})
HModifie(ARTICLE_STOCK)
FIN
SINON
GOTO FIN_TRAIT
FIN
FIN
FIN
FAIRE
FIN_TRAIT:
pLogErreur("PS_BON_LIVRAISON_COM_MAJ_STOCK")
HModifie(ECHEC)
FIN
Cliquez pour agrandir...