PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Les triggers !
Les triggers !
Débuté par no, 13 jan. 2005 23:52 - 5 réponses
Posté le 13 janvier 2005 - 23:52
Bonjour,

J'aimerais savoir s'il est possible d'obtenir plus d'informations avec les triggers. J'utilise une DB Hyperfile et WD 8. la version 9 devrait arriver d'ici quelques semaines.

Ce que je veux faire:
Installer un trigger MODIFICATION et je pourrais savoir l'état du fichier AVANT la modification et APRES la modification. Actuellement je procède comme suit:

Méthode du trigger :
SELON Majuscule(H.Action)
CAS "A"
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info(matable.lbodom)

CAS "P"
// Selon la fonction appelante
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info ("apres:" + matable.lbodom)

CAS "HSUPPRIME"

FIN

La valeur est toujours la meme meme si jai fait une modification. Mon but est de connaitre dans la méthode du trigger la valeur AVANT la modif et APRES la modif.

Comment faire ?

Merci à tous pour votre aide,

Sébastien
Posté le 14 janvier 2005 - 09:51
Sébastien a écrit :

Bonjour,

J'aimerais savoir s'il est possible d'obtenir plus d'informations avec les triggers. J'utilise une DB Hyperfile et WD 8. la version 9 devrait arriver d'ici quelques semaines.

Ce que je veux faire:
Installer un trigger MODIFICATION et je pourrais savoir l'état du fichier AVANT la modification et APRES la modification. Actuellement je procède comme suit:

Méthode du trigger :
SELON Majuscule(H.Action)
CAS "A"
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info(matable.lbodom)

CAS "P"
// Selon la fonction appelante
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info ("apres:" + matable.lbodom)

CAS "HSUPPRIME"

FIN

La valeur est toujours la meme meme si jai fait une modification. Mon but est de connaitre dans la méthode du trigger la valeur AVANT la modif et APRES la modif.

Comment faire ?

Merci à tous pour votre aide,

Sébastien


Bonjour

Voici une solution à votre problème :
http://www.wdforge.org/modules/icontent/index.php…

Bien cordialement
R&B de www.WDForge.org
Posté le 14 janvier 2005 - 19:23
Merci pour ta réponse !

Cependant, est-ce que cela peut marcher si je modifie la clée unique/composée d'un enregistrement ?

Bonne journée,

Sébastien
Posté le 17 janvier 2005 - 13:16
Sébastien a écrit :

Merci pour ta réponse !

Cependant, est-ce que cela peut marcher si je modifie la clée unique/composée d'un enregistrement ?

Bonne journée,

Sébastien


Effectivement, mais il faut dans ce cas surveiller les différentes
composantes. Les clés composées sont des champs calculés par le moteur
HyperFile.

++ R&B
Posté le 17 janvier 2005 - 17:29
Bonjour Romuald,

Je suis encore débutant en WinDev et je ne comprend pas trop comment résoudre le problème. Pourrais-tu expliquer davantage s'il-te-plaît ?

Table A : possède une clée composée de deux valeurs
Table B : possède une clée unique (un ID) ainsi que les valeurs des deux clées composées pointant vers la Table A

Quand je modifie la Table A, je voudrais mettre à jour la Table B avec les nouvelles valeurs des deux rubriques composant la clée composée...

Je crois que ca me prendrait une valeur qui ne changera jamais dans la table A (donc je pourrais m'en servir comme clée), mais il y en a pas car la clée composée peut changer de valeur donc je ne peux pas m'y fier pour brancher ma source de données dans le trigger AVANT et récupérer les vraies valeurs comme je fais. Cela marche bien si je modifie une valeur non clée, mais si je modifie la clée, alors là ca ne marche plus ..

J'ai également essayé d'utiliser HNumEnr et HExécuteRequeteSQL mais ce n'est bon que pour les bases HF et ca n'a pas donné de résultats stables

Exemple:
Table A : clée 1 : de 1 à 2
clée 2 : de 2000/10/10 à 2004/10/10
Table B :
Update set clée 1 = 2, clée2 = 2004/10/10
where clée1 = 1 et clée2 = 2000/10/10

Merci pour vos réponses ! :)

Sébastien
Posté le 17 janvier 2005 - 19:46
Bonjour,

Le problème est qu'un trigger avant s'excéute certe avant la modification
effective du fichier mais bien après la commande écranversfichier donc tout
appel à une variable de type fichier.qqchose donne la valeur future.
Tu devrais donc faire un stockage temporaire de tes champs, faire un hlit,
faire tes traitements et ensuite réassigner les bonnes valeurs que tu as
stockés temporairement et enfin le hmodifie... Une autre combine consiste à
faire la lecture par une source de donnée de l'enregistrement.

Voilà...

B. Neve


"Sébastien" <no@spam.com> a écrit dans le message de news:
41e6e341@news.pcsoft.fr...
Bonjour,

J'aimerais savoir s'il est possible d'obtenir plus d'informations avec les
triggers. J'utilise une DB Hyperfile et WD 8. la version 9 devrait arriver
d'ici quelques semaines.

Ce que je veux faire:
Installer un trigger MODIFICATION et je pourrais savoir l'état du fichier
AVANT la modification et APRES la modification. Actuellement je procède
comme suit:

Méthode du trigger :
SELON Majuscule(H.Action)
CAS "A"
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info(matable.lbodom)

CAS "P"
// Selon la fonction appelante
SELON Majuscule(H.FonctionTrigger)
CAS "HAJOUTE"
CAS "HMODIFIE"
Info ("apres:" + matable.lbodom)

CAS "HSUPPRIME"

FIN

La valeur est toujours la meme meme si jai fait une modification. Mon but
est de connaitre dans la méthode du trigger la valeur AVANT la modif et
APRES la modif.

Comment faire ?

Merci à tous pour votre aide,

Sébastien