TRIGGER - bête question...
Developpeur WDF
Inscrit:
02/05/2003 09:10
Post(s): 103
Bonjour,
Voila, j'essaie de créer un trigger, mais j'ai tjs la meme valeur avant et apres...
Je m'explique, voici comment je déclare mon tigger :

HDécritTrigger("FACTURES","HAJOUTE,HMODIFIE,HSUPPRIME,HRAYE,HECRIT","test",hTriggerAvant)
HDécritTrigger("FACTURES","HAJOUTE,HMODIFIE,HSUPPRIME,HRAYE,HECRIT","test",hTriggerAprès)

HLitRecherchePremier(Factures,IDFactures,4754)
Factures.Numero_Factures = Factures.Numero_Factures + "1"
HModifie(Factures)



et voici la procédure :

PROCEDURE test()

SELON H.Action
CAS "A"
//AVANT
Trace("Avant : " + Factures.Numero_Factures)
CAS "P"
//APRES
Trace("apres : " + Factures.Numero_Factures)

FIN

Il doit donc normalement m'afficher un trace avec le numéro de facture avant et un trace le numéro d'après avec un "1" ajouté.
Seulement j'ai la meme valeur avant qu'après.

Si qq peut m'aider, ce serait sympa.

Geo.

Contribution le : 10/07/2006 12:01
Créer un fichier PDF de la contribution Imprimer


Re: TRIGGER - bête question...
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour G_Angel,

Je pense que cela est tout a fait normal
Citation :

HLitRecherchePremier(Factures,IDFactures,4754)
Factures.Numero_Factures = Factures.Numero_Factures + "1"
HModifie(Factures)

Que c'est il passé avant modification:
Factures.Numero_Factures = Factures.Numero_Factures + "1"
vous avez incrémenté le numéro de facture en mémoire

Donc dans la procédure test vous lisez cette valeur

Que c'est il passé après modification
vous relisez toujours votre variable en mémoire bien que la modification est été réalisée physiquement dans le fichier.


Ce que vous devez réaliser
PROCEDURE test()

SELON H.Action
 CAS "A"
  //AVANT
  nNumFacture est un entier = Facture.Numero_Factures
  HlitRecherche(Factures,IdFacture,Facture.IdFactures)
  //Ici on recharge les données physiquement à partir du fichier (donc valeurs non modifiées)
  //Ici Factures.numero_factures a la valeur attendue
  Trace("Avant : " + Factures.Numero_Factures)
  //On réapplique les modifs car le chargement les a effacées
  Factures.Numero_Facture = nNumFacture
  
 CAS "P"
  //APRES
  Trace("apres : " + Factures.Numero_Factures)
FIN


en fait que ce soit avant ou après vous n'avez fait que lire toujours la mame chose sans chercher à lire ce qu'il y avait sur le disque.

Contribution le : 10/07/2006 12:45
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: TRIGGER - bête question...
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

En complément de DrCharly, il faudrait rajouter un test sur le nom de la fonction Hyperfile qui a été appelée (via h.FonctionTrigger ), car il faut faire des traitements différents suivant les cas (Hajoute, Hmodifie, Hsupprime).

Bon dév.,

Totof

Contribution le : 10/07/2006 13:51
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: TRIGGER - bête question...
Developpeur WDF
Inscrit:
02/05/2003 09:10
Post(s): 103
Merci, je vais essayer ca de suite.

Contribution le : 10/07/2006 14:46
Créer un fichier PDF de la contribution Imprimer


Re: TRIGGER - bête question...
Developpeur WDF
Inscrit:
02/05/2003 09:10
Post(s): 103
Donc, normelement, si je fais un Hlit pour lire le fichier sur la position du pointeur, ca devrait aller ?

SELON H.FonctionTrigger
CAS HAjoute
SELON H.Action
CAS "A"
//AVANT
HLit(Factures)
Trace("Ajout Avant : " + Factures.Numero_Factures)
CAS "P"
//APRES
HLit(Factures)
Trace("Ajout après : " + Factures.Numero_Factures)

FIN
CAS HModifie
SELON H.Action
CAS "A"
//AVANT
HLit(Factures)
Trace("Modification Avant : " + Factures.Numero_Factures)
CAS "P"
//APRES
HLit(Factures)
Trace("Modification après : " + Factures.Numero_Factures)

FIN
END

J'ai essayé ceci, mais ca ne foncionne tjs pas... :o(

Contribution le : 10/07/2006 14:58
Créer un fichier PDF de la contribution Imprimer


Re: TRIGGER - bête question...
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Dans le cas HAjoute le numéro de facture est forcément à 0 ... Il n'y a pas besoin de tester la variable sinon cela reverra la valeur en mémoire. Pas de test à faire dans le HAjoute CAS A. Dans le HAjoute CAS P, il doit y avoir la bonne valeur.
Dans le cas du HModifie, pour éviter les hlitxxxx, il suffit de déclarer une variable globale contenant la valeur de la clé de la facture (gbl_eNumFacture par ex) au moment de l'ouverture de la facture en mode modification. Ainsi, au moment du hModifie cas A, il suffit de récupérer la valeur de cette variable globale et dans le hModifie cas P, il y aura la nouvelle valeur si modification.

P.S. : En théorie un numéro de facture ne doit pas être modifié :)

Bon dév.,

Totof

Contribution le : 11/07/2006 09:41
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2