PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → erreur trigger
erreur trigger
Débuté par e.leclercq, 25 jan. 2006 14:32 - 12 réponses
Posté le 25 janvier 2006 - 14:32
Bonjour,

quelqu'un voit il une anomalie dans mon code ??


HDécritTrigger("ENTREPRISES","HAJOUTE,HMODIFIE","TriggerENTREPRISES",hTriggerAvant)
(code initialisation du projet)

PROCEDURE CalculEffectif()


//Calcul des effectifs dans la colonne Effectif

I est un entier
NomChamp est une chaîne

POUR I 07 A 1996 PAS -1
NomChamp = "ENTREPRISES.Effectifs" + I
SI {NomChamp} > 0 ALORS
ENTREPRISES.Effectif = {NomChamp}
SORTIR
FIN
FIN

SI 1<= ENTREPRISES.Effectif <=9 ALORS
ENTREPRISES.TrancheEffectif1 = ENTREPRISES.Effectif
SINON SI 10<= ENTREPRISES.Effectif <I
ENTREPRISES.TrancheEffectif2 = ENTREPRISES.Effectif
SINON SI 50<= ENTREPRISES.Effectif <9
ENTREPRISES.TrancheEffectif3 = ENTREPRISES.Effectif
SINON SI 200<= ENTREPRISES.Effectif <= 499
ENTREPRISES.TrancheEffectif4 = ENTREPRISES.Effectif
SINON SI 500<= ENTREPRISES.Effectif <= 40000
ENTREPRISES.TrancheEffectif5 = ENTREPRISES.Effectif
FIN

PROCEDURE TriggerENTREPRISES()
qui fait appel à la PROCEDURE CalculEffectif
(dans la partie affichage d'une ligne (table)

merci
Posté le 25 janvier 2006 - 16:29
Manque-t-il un bout de code que tu aurais voulu nous envoyer ? Où est ton erreur exactement ?

1) Si l'erreur est que ton trigger n'est pas appelé, je ne vois pas aucune commande hmodifie dans ton code...

2) Si c'est dans l'init du projet, essaies de reprendre le retour de ton hdécrittrigger dans un booleen et vérifies que le booléen est à Vrai...

Sinon précides ta question ?

Luc
Posté le 26 janvier 2006 - 17:27
Bonjour


// Création du Trigger pour tous les fichiers de l'analyse
LOCAL
ResultatTrigger est un booléen

ResultatTrigger = HDécritTrigger("ENTREPRISES","HAJOUTE,HMODIFIE","CalculEffectif",hTriggerAprès)
SI ResultatTrigger = Vrai ALORS
Info("ERREUR SUR LE TRIGGER")// Erreur("Erreur sur un trigger : "+HErreurInfo)
RETOUR
FIN
quand j'ajoute le rélutatTrigger et que je lance un test "tracer le projet" la valeur de
RésultatTrigger est Faux

Comment réparer cet état de fait ??

merci à l'avance
Posté le 26 janvier 2006 - 17:27
// Création du Trigger pour tous les fichiers de l'analyse
LOCAL
ResultatTrigger est un booléen

ResultatTrigger = HDécritTrigger("ENTREPRISES","HAJOUTE,HMODIFIE","CalculEffectif",hTriggerAprès)
SI ResultatTrigger = Vrai ALORS
Info("ERREUR SUR LE TRIGGER")// Erreur("Erreur sur un trigger : "+HErreurInfo)
RETOUR
FIN

en fin de test mon booléen est à faux

merci à l'avance
Posté le 26 janvier 2006 - 20:54
Résultat = Vrai si l'opération a été réalisée, Faux en cas de problème. La fonction HErreurInfo permet d'identifier l'erreur.

Donc si faux, tu as une erreur à la définition de ton trigger...

Si je regarde ton code, tu affiche l'erreur si RésultatTrigger = Vrai... Tu dois afficher l'erreur si le résultat est Faux, ce qui est ton cas.

Ensuite tu nous diras ce que contient le herreurinfo.

Luc
Posté le 27 janvier 2006 - 11:48
Bonjour,
et merci de m'aider

LOCAL
ResultatTrigger est un booléen


HDécritTrigger("ENTREPRISES","HAjoute,HModifie","CalculEffectif",hTriggerAvant)
SI ResultatTrigger = Faux ALORS
Erreur("Erreur sur un trigger : "+HErreurInfo)
RETOUR
FIN


le débogueur m'indique ResultatTrigger = Faux
HNumEnr = -1
Hendehors = Faux
Herreur = 0


donc apparamment le trigger n'est pas pris en compte lors de l'initialisation du projet
Posté le 27 janvier 2006 - 12:48
ERIC LECLERCQ a formulé la demande :
Bonjour,
et merci de m'aider

LOCAL
ResultatTrigger est un booléen


HDécritTrigger("ENTREPRISES","HAjoute,HModifie","CalculEffectif",hTriggerAvant)
SI ResultatTrigger = Faux ALORS
Erreur("Erreur sur un trigger : "+HErreurInfo)
RETOUR
FIN


le débogueur m'indique ResultatTrigger = Faux
HNumEnr = -1
Hendehors = Faux
Herreur = 0


donc apparamment le trigger n'est pas pris en compte lors de l'initialisation du projet


Ton fichier "ENTREPRISES" existe t il bien dans l'analyse attachée au projet?
La procédure "CalculEffectif" est elle bien dans une collections de procédures du projet (et non dans un composant) ?
Quel est le message retourné par HerreurInfo ?

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 27 janvier 2006 - 15:03
Bonjour

Le fichier ENTREPRISES est dans l'analyse (aucun problème)

et la procédure CalculEffectif est dans la collection de procédure globale du projet

merci
Posté le 27 janvier 2006 - 15:54
ERIC LECLERCQ a pensé très fort :


Bonjour

Le fichier ENTREPRISES est dans l'analyse (aucun problème)

et la procédure CalculEffectif est dans la collection de procédure globale du projet

merci


Actuellement je déclare mes triggers dans une procédure globale d'un composant
// on décrit le trigger de Log
HDécritTrigger("*","HAjoute,Hmodifie","pTIME_STAMP",hTriggerAvant)


Cette procédure globale est appellée lors de l'ouverture du projet qui appelle le composant qui sert au login, vérification de
licence, etc...

Elle sert à mettre un time stamp sur tous les enregistrements et elle fonctionne parfaitement. par contre je n'ai pas testé la
valeur renvoyée parla déclaration du trigger.

Maintenant, si ton problème est que le trigger n'est pas appelé ainsi que le demandait Luc, il ne peut être appelé qu'au moment
ou tu fais un HaAjoute ou un hModifie mais en aucun cas lorsque tu parcours une table même si c'est une table fichier. Si tu
souhaite exécuter ton code lors du parcours ou de l'affichage, il faut appeler ta procédure dans le code correspondant de la
table (sélection ou affichage)

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 30 janvier 2006 - 12:19
Bonjour,

OK pour la procèdure, mais comment la lancer lors de l'initialisation ?


si je mets le nom de la procèdure dans le code d'initialisation, il n'y a pas d'erreur

mais rien ne se fait et le résultat en mode test tracer le projet m'indique la valeur

faux comme le trigger j'ai cherché partout de la doc mais rien !

je suis complètement bloqué sur la construction de l'appli

merci encore
Posté le 30 janvier 2006 - 15:33
Bonjour,

mon problème est le suivant :

j'ai un calcul qui se fait sur la table fichier (calcul des effectifs les plus récents dans une colonne)

je sais qu'il est possible de le faire sur une table issue d'une requette mais mon problème est qu'il faut que j'ai le calcul fait avant la requette pour passer des parametres sur les résultats de ces calculs ex : tranche effectif de 0 à 10

c'est pour cela que j'ai besoin d'un trigger qui lance le calcul à l'ouverture de l'application

et que lorsque j'établis une requette je puisse avoir un choix de valeur sur la rubrique

merci
Posté le 30 janvier 2006 - 16:26
ERIC LECLERCQ a pensé très fort :


Bonjour,

mon problème est le suivant :

j'ai un calcul qui se fait sur la table fichier (calcul des effectifs les plus récents dans une colonne)

je sais qu'il est possible de le faire sur une table issue d'une requette mais mon problème est qu'il faut que j'ai le calcul
fait avant la requette pour passer des parametres sur les résultats de ces calculs ex : tranche effectif de 0 à 10

c'est pour cela que j'ai besoin d'un trigger qui lance le calcul à l'ouverture de l'application

et que lorsque j'établis une requette je puisse avoir un choix de valeur sur la rubrique

merci


Ce n'est pas un trigger qui fera ça.
C'est une procédure qui sera lancée au démarrage de l'appli.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 06 février 2006 - 15:10
ERIC LECLERCQ a couché sur son écran :


Bonjour,

OK pour la procèdure, mais comment la lancer lors de l'initialisation ?


si je mets le nom de la procèdure dans le code d'initialisation, il n'y a pas d'erreur

mais rien ne se fait et le résultat en mode test tracer le projet m'indique la valeur

faux comme le trigger j'ai cherché partout de la doc mais rien !

je suis complètement bloqué sur la construction de l'appli

merci encore


Pas facile avec les éléments que tu donnes! Ce qui està faire si j'ai compris ton problème, c'est une procédure qui doit être
lancé lors de l'ouverture de la fenetre ou de l'appli et qui stocke dans une liste un tableau ou un fichier les trancehes ou le
résultat que tu souhaites.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre