PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HRequeteSQL hModifieFichier, ET TRIGGERS FONCTIONNE PAS !
HRequeteSQL hModifieFichier, ET TRIGGERS FONCTIONNE PAS !
Débuté par Sébastien, 05 avr. 2005 21:59 - 4 réponses
Posté le 05 avril 2005 - 21:59
Bonjour,

Mon code :

//Trouver nombre d'enregistrements affectés
nbEnr est entier = 0
nbSuppr est entier = 0
ReqSelectSupprMasse est une Source de Données
SI PAS HExécuteRequêteSQL(ReqSelectSupprMasse, hModifieFichier, "select * from " + nomTable + sConditions) ALORS
Erreur("Incapable de supprimer les enregistrements. Erreur : " + HErreur())
FIN
HLitPremier(ReqSelectSupprMasse)
nbEnr = HNbEnr(ReqSelectSupprMasse)

//Supprimer localement et triggers vont s'occuper du reste
TANTQUE PAS HEnDehors(ReqSelectSupprMasse)
SI HSupprime(ReqSelectSupprMasse) ALORS
nbSuppr ++
FIN
HLitSuivant(ReqSelectSupprMasse)
FIN

Le trigger de HSupprime n'est JAMAIS délenché ? Pourquoi ? J'utilise bien HSupprime(). Le Trigger fonctionne bien, car je l'utilise ailleurs dans une fenetre RAD et pas de problèmes.

Installer le trigger:

ResultatTrigger est un booléen
ResultatTrigger = HDécritTrigger("MaTableXXXX","HSUPPRIME","TablesAvantSuppr", hTriggerAvant)

SI ResultatTrigger = Faux ALORS
Erreur("Incapable d'installer le Trigger : "+HErreurInfo)
FIN

Merci pour votre aide !

Sébastien
Posté le 06 avril 2005 - 14:00
Bonjour,
Si mes souvenirs sont bons, un trigger appelle une procédure... du moteur de base de données.., modification, création, suppression.... (Hajoute, Hsupprime...)

Donc je ferais une procédure du style
Fonction MaProcedure()
// Trouver le nombre d'enregistrements affectés
HexecuteRequete(MaRequetedeSelection,....)
Si Hnbenr(MaRequetedeSelection)>0 alors
hexecuteRequete(MaRequetedeSuppresion,.....)
fin

qui serait appelée à la fin du code du bouton de suppresion

Ceci dit, si c'est pour supprimer des enregistrements dans des fichiers de liaisons, regarde la description de la liaison dans l'analyse ou tu peux préciser les actions à effectuer lors de la suppresion d'un enregistrement.
Posté le 06 avril 2005 - 16:44
Bonjour,

Je pensais qu'un trigger était déclenché avant ou apres un HSupprime par exemple ?
Dans ce cas, MaProcédure serait déclenchée normalement quand je supprime une fiche.

Cela marche bien pour les fiches RAD, mais quand je fais une requete, cela ne marche plus!

Merci pour vos réponses,

Sébastien
Posté le 06 avril 2005 - 17:06
Sébastien avait écrit le 05/04/2005 :
Bonjour,

Mon code :

//Trouver nombre d'enregistrements affectés
nbEnr est entier = 0
nbSuppr est entier = 0
ReqSelectSupprMasse est une Source de Données
Installer le trigger:

ResultatTrigger est un booléen
ResultatTrigger = HDécritTrigger("MaTableXXXX","HSUPPRIME","TablesAvantSuppr", hTriggerAvant)

A priori le trigger n'est pas défini sur ReqSelectSupprMasse, donc aucune raison qu'il se déclenche !

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 09 avril 2005 - 11:02
Bonjour,

Sauf si je me trompe, j'aimerais BEAUCOUP ça, mais il est IMPOSSIBLE de définir un trigger sur autre chose qu'un fichier...si j'essaie, il plante avec le message: "n'est pas un fichier"

Comment faire ??

Merci infiniment pour votre aide !

Sébastien