IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

[WD12] Triggers serveurs non déclenchés


Sujet :

HyperFileSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut [WD12] Triggers serveurs non déclenchés
    Bonjour,

    Je viens vers vous accompagné d'un joli problème qui me semble de plus en plus insoluble...
    J'utilise sur mes tables un Trigger Serveur dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dhMaDateHeure est une DateHeure
    QUAND EXCEPTION DANS
     
    	{H.NomFichier + ".DateModification", indRubrique} = DateHeureLocaleVersUTC(dhMaDateHeure)
     
    FAIRE
     
    	HLitPremier(PARAMETRES)
    	PARAMETRES.LogErreur += ExceptionInfo(errComplet)
    	HModifie(PARAMETRES)
     
    FIN
    Il est configuré pour se déclencher en Ajout et en Modification d'un enregistrement, ce qui me permet donc d'avoir la date et heure de dernière modification de chaque enregistrement...

    Maintenant, voila le problème : Le trigger ne se déclenche pas tout le temps :S
    Après de nombreux tests un peu dans tous les sens, il s'avère que par moment, sur un enregistrement des plus simples, le trigger ne se déclenche tout simplement pas...

    Et je pense avoir le même problème sur d'autres Triggers un peu plus complexes, sans avoir eu possibilité de le vérifier jusqu'a là...

    Est ce que quelqu'un aurait déjà eu à faire face à un problème similaire ?

    Finar

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Finar Voir le message
    ...
    QUAND EXCEPTION DANS

    {H.NomFichier + ".DateModification", indRubrique} = DateHeureLocaleVersUTC(dhMaDateHeure)

    FAIRE

    HLitPremier(PARAMETRES)
    PARAMETRES.LogErreur += ExceptionInfo(errComplet)
    HModifie(PARAMETRES)
    FIN[/CODE]
    ...
    Bonjour, je ne comprends peut-être pas bien le problème, mais moi je vois un traitement d'exception qui ne se déclenche que si
    {H.NomFichier + ".DateModification", indRubrique} = DateHeureLocaleVersUTC(dhMaDateHeure)
    crée un exception. Et je ne vois pas pourquoi cela devrait être le cas.

    Salutations
    Mat

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Il ne s'agit pas de l'exception qui ne se déclenche pas, mais de tout le trigger, exemple :

    Soit une table avec IDRubrique, LibRubrique, DateModification.

    J'ajoute un enregistrement IDRubrique = 1, LibRubrique = Ajout1, mon trigger se déclenche bien et renseigne mon DateModification.
    J'en ajoute un deuxième, IDRubrique = 2, LibRubrique = Ajout2, et la... Mon trigger ne vient pas renseigner mon "DateModification", ni ne génère d'exception, bref, rien du tout, comme si il ne se déclenchait tout simplement pas.

    Le phénomène est ponctuel, et sur différents fichiers, et il ne dépends pas des données (deux enregistrements identiques - hormis l'ID - pourront être ajoutés, et le problème surviendra sur l'un d'entre eux seulement par exemple).

    Finar

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut
    Après de nombreux tests et essais (suppression / recréation du fichier, réindexation, ajout d'un autre trigger, etc etc...) : Toujours le même soucis

    Le ST est prévenu, mais j'aime autant ne négliger aucune piste alors... Pas d'idées par ici ?

    Finar

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    ceci devrait aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dhMaDateHeure est une DateHeure
    QUAND EXCEPTION DANS
     
    	{H.NomFichier + ".DateModification", indRubrique} = DateHeureLocaleVersUTC(dhMaDateHeure)
    	si pas hModifie(H.NomFichier) alors
               info(hErreurInfo)
            fin
    ...
    FIN
    Salutations
    Mat

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Je viens de faire un petit test avec 10'000 d'ajouts sur plusieurs fichiers et le résultat donne toujours le même nombre de triggers que d'ajouts... je pense le problème se trouve avec hModifie ou un EcranVersFichier qui efface la date écrit auparavant dans la procédure du trigger.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Initialisation du projet
    TriggerResult = HDécritTrigger("*","HAJOUTE","gpTrigger",hTriggerAprès)
    SI TriggerResult = Faux ALORS 
    	Erreur("Trigger error: "+HErreurInfo)
    	RETOUR
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //procédure globale
    PROCEDURE gpTrigger()
    //info("Hello, this is a trigger", h.FileName)
    gnTrigger ++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Dans un bouton d'une fenêtre
    i est entier
    POUR i = 1 A 10000
    	HRAZ(monFichier)
    	monFichier.IDmonFichier = i
    	HAjoute(monFichier)
     
    FIN
    Info("Trigger: " + gnTrigger)
    gnTrigger = 0

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 80
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Citation Envoyé par mat__ Voir le message
    Bonjour,

    ceci devrait aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dhMaDateHeure est une DateHeure
    QUAND EXCEPTION DANS
     
    	{H.NomFichier + ".DateModification", indRubrique} = DateHeureLocaleVersUTC(dhMaDateHeure)
    	si pas hModifie(H.NomFichier) alors
               info(hErreurInfo)
            fin
    ...
    FIN
    Salutations
    Mat
    Nous avons déja essayé ce genre de chose, mais malheureusement, quand le "bug" survient, ca ne donne rien (pas de trace, pas de retour, bref... On dirait vraiment que ca ne passe même pas dans le trigger).

    Pour ce qui est d'un EcranVersFichier ou d'un HModifie qui interviendrait après... Nous avons vérifié cela également, mais il n'y en a aucun après l'ajout. Si l'on place un point d'arret juste après le HAjoute et que l'on regarde la valeur en tombant sur un cas problématique : Le champs est à vierge, immédiatement après le HAjoute :-/

    Précision... Il s'agit de Trigger Serveur, donc pas de HDecritTrigger, le trigger étant définit directement dans l'analyse.
    A ce propos, nous avons aussi vérifié l'état du Trigger juste avant ajout : Il est bien actif.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/09/2012, 18h19
  2. Réponses: 11
    Dernier message: 17/01/2008, 18h53
  3. IIS : Application serveur non disponible
    Par drim dans le forum IIS
    Réponses: 7
    Dernier message: 04/08/2006, 09h52
  4. Gestionnaires d'évènements non déclenchés
    Par Sylvain James dans le forum XMLRAD
    Réponses: 7
    Dernier message: 19/04/2006, 18h14
  5. [D8] Application serveur non disponible
    Par Keke des Iles dans le forum EDI
    Réponses: 4
    Dernier message: 27/09/2004, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo