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

Firebird Discussion :

POST_EVENT Tester son envoi


Sujet :

Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut POST_EVENT Tester son envoi
    Bonjour a tous


    je ne sais trop sur quel sous-forum mettre ce post...


    Sous Firebird 2.1,
    J'envoi un POST_EVENT a la modification de certaines tables (rien de plus classique) inclut dans un trigger. Voici son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR ALTER TRIGGER B_Gestion_Obs_Aiud0 FOR B_Gestion_Obs
    ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 1
    AS
    BEGIN
        /* Envoi de l'evenement */
        POST_EVENT 'MAJ_Gest_Obs' || TRIM (CAST (NEW.Id_Bagueur AS VARCHAR (20)));
    END
    Jusqu'a present dans mon programme (sous delphi 7), ces evenements etaient parfaitement traite. Mais depuis qq jours, ce n'est plus le cas...

    Evidement je n'ai rien modifie dans les sources du programme

    Aussi j'aimerai bien tester si le "post_event" est bien envoye de la base

    Y a t-il un moyen de verfier si l'evenement est bien genere par la base sans passer par le programme (par ex sous ibExpert )

    a+
    olivier

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Flamerobin permet d'écouter les events facilement

  3. #3
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Merci ca marche

    Et les post-event fonctionnent. Donc ca vient de mon programme

    mais la piste se ressere....

    encore merci et bonne annee

    olivier

  4. #4
    Membre chevronné Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Par défaut
    Bonjour dehorter olivier;
    J'essaie justement de faire quelque chose de similaire mais comment au niveau de l'application on intercepte un événement qu'on ne connais pas le nom, j'ai cru que les événements à intercepter doivent être enregistrés pour pouvoir les reconnaitre. J'utilise Delphi et EventAlerter de FIB Plus.
    Merci.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    bonjour JustMe

    J'ai eu moi aussi ce cas de figure, voici comment je n'en suis sorti (j'utilise les compasants IBDAC sous delphi).

    Tout d'abord, dans les triggers, j'ai ce type d'ecriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        POST_EVENT 'MAJ_Gest_Obs-' || TRIM (CAST (NEW.Id_Bagueur AS VARCHAR (20)));
    NB : le tiret n'est utile pour reperer un evenement generique ou specifique !

    En fait, le truc est dans la partie "programme" de stopper l'interception des evenements pour recreer la liste de ces evenements (j'espere etre clair)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Procedure TfFicheObs.Gestion_Events;
    Begin
       TRY
               // ajoute un nouveau evenement de synchronisation pour firebird
               fData.EventsFB.Stop;
                  // efface les anciens elements
               IF fData.EventsFB.Events.IndexOf('MAJ_Gest_Obs-' + IntToStr(Old_NumObs)) > -1 THEN
                  fData.EventsFB.Events.Delete(fData.EventsFB.Events.IndexOf('MAJ_Gest_Obs-' + IntToStr(Old_NumObs)));
     
                  // Ajoute les nouveaux element
               fData.EventsFB.Events.Add('MAJ_Gest_Obs-' + IntToStr(NumObs));
               fData.EventsFB.Start;
       EXCEPT
           IF fPrincipal.Log THEN fPrincipal.Logger.Add('fichObs -F53a-');
       END;
    End;  // Fin de procedure
    qui se declenche au moment ou je change de personnes.

    et j'ai programme la gestion des evenements comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    procedure TfData.EventsFBEvent(Sender: TObject; EventName: String;
      EventCount: Integer);
    VAR
       Quel  : (Vide,MAJ_Obs, MAJ_Gest_Obs, MAJ_PP, MAJ_PA, MAJ_Res, MAJ_DEM, MAJ_Stock, MAJ_Bague, MAJ_Archive);
       Chaine          : String;
       Numero          : Integer;
       Position        : Byte;
    begin
      Position := Pos('-', EventName);
       IF Position > 0 THEN  // permet de reperer un evenement generique ou specifique
       Begin
          Chaine := Copy(EventName, 1, Position -1);
          Numero := StrToInt(Copy(EventName, Position + 1, 255));
       End ELSE
       Begin
          Chaine := EventName;
       END;  // Fin de IF
       IF Chaine = 'MAJ_OBS' THEN Quel := MAJ_Obs ELSE
       IF Chaine = 'MAJ_OBS_INS' THEN Quel := MAJ_Obs ELSE
       IF Chaine = 'MAJ_Gest_Obs' THEN Quel := MAJ_Gest_Obs ELSE
       IF Chaine = 'MAJ_DEM' THEN Quel := MAJ_DEM ELSE
       IF Chaine = 'MAJ_Bague' THEN Quel := MAJ_Bague ELSE
       IF Chaine = 'MAJ_PP' THEN Quel := MAJ_PP ELSE
       IF Chaine = 'MAJ_ARCHIVE' THEN Quel := MAJ_Archive ELSE
          ;
     
     
       CASE Quel OF
          MAJ_Obs :
             Begin
             End;
          MAJ_Gest_Obs :
             Begin
                IF Application.FindComponent('fFicheObs') <> Nil THEN
                Begin
                   fFicheObs.MAJ_Gest := True;
                   IF (fFicheObs.PageInfos.ActivePage = fFicheObs.Tab_Gestion) AND (Numero = Commun.NumObs) THEN
                   Begin
                      IF (fPrincipal.bBagOui.Visible) THEN
                      Begin
                         IF Sons THEN MessageBeep(0);
                         fFicheObs.bNonClick(fData);
                         MessageDlg(_('Quelqu''''un vient de faire des '+#13+#10+'modifications sur cette personne !'+#13+#10+''+#13+#10+'Votre operation doit etre annulee !'), mtWarning, [mbOK], 0);
                      END;
                      fFicheObs.PageInfosChange(Nil);
                   END; //
                END;  // Fin de IF
             End;
          MAJ_DEM :
             Begin
              End;
          MAJ_Bague :
             Begin
              End;
          MAJ_PP :
             Begin
              End;
          MAJ_Archive :
             Begin
             End;
       END;  // Fin de CASE
    end;
    et je fais le rafraicissement si je suis dans le cas de figure qui m'interesse

    cela t'ai utile

    a+

    olivier

  6. #6
    Membre chevronné Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Par défaut
    très généreux de ta part dehorter olivier mais mon cas de figure ne me permet pas d'enregistrer et de dés-enregistrer un nombre important d'événements. Merci une fois de plus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EasyPHP] Tester l'envoi d'e-mails sur son PC avec EasyPHP
    Par khalid_kha dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 03/08/2007, 17h36
  2. Tester son premier EJB
    Par jeoff dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 22/06/2006, 10h55
  3. Tester son code sur divers navigateurs
    Par benassis dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 22/03/2006, 13h12
  4. Comment tester son matériel ?
    Par narmataru dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 06/12/2005, 18h41
  5. Réponses: 13
    Dernier message: 11/05/2003, 13h25

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