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

Langage Delphi Discussion :

Delphi, Firebird et monitoring


Sujet :

Langage Delphi

  1. #21
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    erreur de syntaxe, je viens de trouver c'est rdb$get_context, maintenant je passe au test et vous tiens informer
    Rien comme résultats ! même en mettant un point d'arrêt le programme n'exécute jamais le bout de code du IBCAlerter1Event comme si il ne se connectait pas à la BD !

    Juste une question Serge, le OnConnect je l'ai mis sur la base de données je veux dire quand je l'ai créé à partir de IBExpert j'ai choisis Database trigger puis j'ai copier le code vous m'avez proposer avec la correction du rdb$getcontext, y'a t-il quelque chose qui m'échappe ?!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #22
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Après réflexion je crois que le OnConnect n'est pas considéré comme une alerte et par conséquent n'est pas géré dans les événements du IBCAlerter1Event c'est la seule explication que je trouve puisque la table se renseigne correctement.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #23
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Avec la seconde proposition j'ai l'erreur suivante : Function unknown. RDB_GET$CONTEXT.
    c'était voulu afin que tu lises la doc référence
    Après réflexion je crois que le OnConnect n'est pas considéré comme une alerte
    Sans vouloir te vexer c'est une conclusion plus qu'incorrecte
    le TRIGGER sur le ON CONNECT fonctionne, pour preuve les enregistrements
    sur le forum firebird il y a un post pour télécharger/tester un programme de monitoring pourquoi ne pas tester avec ?
    [Edit]j'ai retrouvé le lien FBMonitor mais pas encore testé pour les évènements
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #24
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    le TRIGGER sur le ON CONNECT fonctionne, pour preuve les enregistrements
    je n'ai jamais conclue qu'il ne fonctionnait pas mais j'ai seulement dis qu'il n'est, peut-être, pas considéré comme une alerte donc le IBCAlerter ne réagit pas même si le trigger onconnect est ajouté à la liste de ses events.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    je n'ai jamais conclue qu'il ne fonctionnait pas mais j'ai seulement dis qu'il n'est, peut-être, pas considéré comme une alerte donc le IBCAlerter ne réagit pas même si le trigger onconnect est ajouté à la liste de ses events.
    IBCAlerter réagit à des noms d'évènements pas à des noms de trigger
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    IBCAlerter réagit à des noms d'évènements pas à des noms de trigger
    Exact, je faisais allusion au Post_Event du trigger ...

    Mais sincèrement je n'y comprends rien, j'ai tout refais, la table s'alimente mais je ne reçois pas le message inséré dans le code Delphi !

    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
    procedure Tdm_Medic.IBCAlerter1Event(Sender: TObject; EventName: string;
      EventCount: Integer);
    begin
      IBCAlerter1.Events.Clear;
      // Ajout des événements
      IBCAlerter1.Events.Add('nouveau_patient');
      IBCAlerter1.Events.Add('Patient_examine');
      IBCAlerter1.Events.Add('facture_reglee');
      IBCAlerter1.Events.Add('CONNEXION_CLIENT');
      IBCAlerter1.Events.Add('DECONNEXION_CLIENT');
      // Recensement des événements
      IBCAlerter1.AutoRegister := True;
     
       // traitement des événements
      if not(IBCTable_INFO_PC.Active) then
        IBCTable_INFO_PC.Open;
     
      if EventName = 'CONNEXION_CLIENT' then
      begin
        MessageDlg(Format('Démarrage connexion du poste %s à %s',
         [IBCTable_INFO_PC.FieldByName('PC').AsString,
         IBCTable_INFO_PC.FieldByName('DATE_CON').AsString]),
         mtInformation, [mbOK], 0);
        Exit;
      end;
     
      if EventName = 'DECONNEXION_CLIENT' then
      begin
        MessageDlg(Format('Fin connexion du poste %s à %s',
         [IBCTable_INFO_PC.FieldByName('PC').AsString,
         IBCTable_INFO_PC.FieldByName('DATE_CON').AsString]),
         mtInformation, [mbOK], 0);
        Exit;
      end;
     
      if EventName = 'nouveau_patient' then
      begin
        MessageDlg('Nouvel enregistrement dans table des patients',
          mtInformation, [mbOK], 0);
        Exit;
      end;
     
      if EventName = 'facture_reglee' then
      begin
        if not(IBCTable_Fact_Reglee.Active) then
          IBCTable_Fact_Reglee.Open;
        IBCTable_Fact_Reglee.Locate('CODE_PATIENT',
          fm_Auscultation.IBCTable_PatientCODE_PATIENT.AsString, []);
        MessageDlg(Format('Facture réglée du patient %s',
            [IBCTable_Fact_Reglee.FieldByName('NOM_PATIENT').AsString]),
            mtInformation, [mbOK], 0);
        Exit;
      end;
     
      if EventName = 'Patient_examine' then
      begin
        MessageDlg(Format('Le patient %s vient d''être examiné.',
          [IBCTable_PatientNOM_PATIENT.AsString]), mtInformation, [mbOK], 0);
        Exit;
      end;
    end;
    et voici par ailleurs le trigger onConnect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR ALTER trigger ONCONNECT
    active on connect position 0
    AS
    begin
      INSERT INTO TB_INFO_PC(PC,DATE_CON,CONECT_DECONECT)
        VALUES(rdb$get_context('SYSTEM', 'CLIENT_ADDRESS'), CURRENT_TIMESTAMP, 'CONNEXION');
      POST_EVENT 'CONNEXION_CLIENT';
    end
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Re,

    j'ai voulu en avoir le cœur net et utilisé le moniteur d'évènement de FlameRobin (une découverte pour moi alors que j'utilise FlameRobin depuis des lustres)

    et cela fonctionne voici la table
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE INFOS_CONNEXION
    (
      PC Varchar(253),
      DATE_CONNEXION Timestamp
    );
    le trigger
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SET TERM ^ ;
    ALTER TRIGGER ONCONNECT ACTIVE
     POSITION 0
    AS 
    BEGIN 
       INSERT INTO INFOS_CONNEXION(PC,DATE_CONNEXION) VALUES (RDB$GET_CONTEXT('SYSTEM','CLIENT_ADDRESS'),current_timestamp); 
       post_event 'Connexion_Client';
    END^
    SET TERM ; ^
    environnement 2 postes en wifi un en Vista l'autre en W10 la base se trouve sur le 1°poste (vista) , sur ce dernier j'ai lancé Flamerobin, je me suis connecté à la base et lancé le moniteur d'évènements (menu contextuel de la base Advanced/Monitor events
    j'ai ensuite enregistré les "EVENTS" que je voulais suivre (attention avec FlameRobin la casse est importante)
    et voici l'image écran après connexion via mon 2° poste avec FlameRobin
    Nom : CapturerEvents.PNG
Affichages : 238
Taille : 87,9 Ko
    idem si j'utilise un programme autre se connectant à la base (sur le poste "serveur" ou "client")

    une autre solution consiste à mettre l'Event dans un autre Trigger lié à la table INFOS_CONNEXION
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET TERM ^ ;
    CREATE TRIGGER ENVOI_EVENT FOR INFOS_CONNEXION INACTIVE
    AFTER INSERT POSITION 0
    AS 
    BEGIN 
    	 post_event 'Connexion_Client';
    END^
    SET TERM ; ^
    nb. c'est pour cela que sur l'image il y a un (2), si je désactive ce dernier je n'ai qu'un (1)

    Conclusion : Firebird n'est pas le problème et d'ailleurs toute ces derniers Posts auraient plus leur place dans le forum Firebird
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #28
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Je ne doute pas là dessus mais je crois que le problème vient de IBDAC lui même ou de Delphi car avec IBExcpert j'ai le résultat du monitoring.
    donc pour être sûr, est-ce vous avez essayer avec FireDAC par exemple et qu'est ce que ça a donné comme résultats je parle surtout du ONCONNECT ?

    merci encore Serge
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  9. #29
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Just-Soft Voir le message
    est-ce vous avez essayé avec FireDAC par exemple et qu'est ce que ça a donné comme résultats je parle surtout du ONCONNECT ?
    Comme d'habitude, lorsque j'ai un os à ronger, je le ronge jusqu'à la moëlle (au détriment de mes obligations pros, mais bon, j'ai quelques latitudes )

    en p.j. le source et l'executable (Delphi Berlin, FireDac) tests effectués dans les conditions indiquées du post précédent résultats escomptés au rendez-vous

    pour le [test foo] j'ai ajouté une procédure à la base
    qui me permet d'envoyer n'importe quel nom d'évènement
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET TERM ^ ;
    CREATE PROCEDURE ENVOI (
        NOM Varchar(20) )
    AS
    BEGIN
      POST_EVENT :NOM;
    END^
    SET TERM ; ^
    dans le programme je teste ('foo' et 'Connexion_Client')

    le reste, à lire dans les sources (basiques, désolé, certains composants ne sont pas nommés correctement, c'est fait à la va vite et je découvre cette fonctionnalité de Firedac) quelques modifications et je pense que je proposerai le source et l'exécutable au téléchargement
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #30
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re,

    Merci Serge pour toutes les astuces ... à présent ça marche bien sauf pour la déconnexion, j'ai recopié la même ligne dans le ONDECONECT mais ça ne marche pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR ALTER trigger ondeconnect
    active on disconnect position 0
    AS
    begin
      INSERT INTO TB_INFO_PC(PC,DATE_CON,CONECT_DECONECT)
        VALUES(rdb$get_context('SYSTEM', 'CLIENT_ADDRESS'), CURRENT_TIMESTAMP, 'DECONNEXION');
      POST_EVENT 'DECONNEXION_CLIENT';
    end
    sauf que j'ai remarqué que le générateur avance d'un pas lors du démarrage suivant ! donc l'appel se fait mais la table n'est pas renseignée ?
    y'a t-il une explication à ça ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  11. #31
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Just-Soft Voir le message
    sauf que j'ai remarqué que le générateur avance d'un pas lors du démarrage suivant ! donc l'appel se fait mais la table n'est pas renseignée ?
    Quel générateur ?

    j'ai rapidement fait un test (avec le programme donné et donc cet event en plus) cela fonctionne. Bon, bien évidemment et c'est normal le fait d'ouvrir/fermer le programme de surveillance obligeant à ourir/fermer la base de données ces évènements sont consignés mais non vu par le programme de surveillance bien que les évènements soit bien enregistrés

    pour information, j'ai un peu amélioré le programme en ajoutant un recensement des POST_EVENT existant dans une base de données de cette manière

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // requête de fdRecense
    SELECT a.RDB$TRIGGER_SOURCE AS SOURCE
    FROM RDB$TRIGGERS a
    WHERE POSITION('POST_EVENT',UPPER(a.RDB$TRIGGER_SOURCE))>0
    UNION
    SELECT a.RDB$PROCEDURE_SOURCE
    FROM RDB$PROCEDURES a
    WHERE POSITION('POST_EVENT',UPPER(a.RDB$PROCEDURE_SOURCE))>0
    je me demande même s'il n'y a pas un moyen d'extraire le nom seul de l'EVENT directement avec Firebird et ce sans passer par le code Delphi suivant
    mais comme on est dans le forum Delphi
    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
    procedure TFormWatchEvent.RecenserClick(Sender: TObject);
    /// Recensement des évènements dans la base de données
    // uses ... System.RegularExpressions .... 
    /// utilisation de l'expression régulière pour obtenir les noms
    var reg : TRegEx;
        L : TMatchCollection;
        I: integer;
        event : String;
    const r = '^.*POST_EVENT.*\''(.*?)\''.*$';
    begin
    with FDRecense do
     begin
       Active:=True;
       while not EOF do
        begin
          Reg:=TRegEx.Create(r,[roIgnoreCase,roMultiLine]);
          L:=Reg.Matches(FDRecense.Fields[0].asString);
          if L.Count>0 then
            begin
              for I := 0 to L.Count-1 do
               begin
                 Event:=L.Item[i].Groups.Item[1].Value; // nom de l'évènement
                 if Events.Lines.IndexOf(event)<0 then
                       Events.Lines.Add(Event);
               end;
            end;
          Next;
        end;
       Active:=False;
     end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #32
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Pas de chance j'ai Delphi 2010 !!!

    Edit : je parlais du générateur de la table TB_INFO_PC quand je ferme mon application je ne trouve pas la trace de l'appel à disconnect mais quand je relance l'appli je trouve dans la table TB_INFO_PC que le générateur à était incrémenter de deux ?! donc l'appel à disconnect a était fait mais la ligne n'a pas était insérer comme attendu ?!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  13. #33
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Pas de chance j'ai Delphi 2010 !!!
    si c'est les expressions régulières qui gènent (c'est la seule chose qui est un peu "originale"), il me semble bien qu'elles existaient déjà (pas envie de vérifier) ou du moins que c'était facile à installer

    [Edit] pour Delphi 7 http://regexpstudio.com/TRegExpr/TRegExpr.html
    pour D2010 http://www.regular-expressions.info/delphi.html
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #34
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    si c'est les expressions régulières qui gènent (c'est la seule chose qui est un peu "originale"), il me semble bien qu'elles existaient déjà (pas envie de vérifier) ou du moins que c'était facile à installer
    quand est-il du disconnect ? pourquoi il n'insère pas de ligne à la déconnexion ? pourtant il me parait que le code est juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR ALTER trigger ondeconnect
    active on disconnect position 0
    AS
    begin
      INSERT INTO TB_INFO_PC(PC,DATE_CON,CONECT_DECONECT)
        VALUES(rdb$get_context('SYSTEM', 'CLIENT_ADDRESS'), CURRENT_TIMESTAMP, 'DECONNEXION');
      POST_EVENT 'DECONNEXION_CLIENT';
    end
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  15. #35
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Tous les tests que j'ai effectué me montre le résultat attendu dans ma Base
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #36
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Tous les tests que j'ai effectué me montre le résultat attendu dans ma Base
    avec le même code que je viens de remettre ici ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  17. #37
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    OUI, sauf bien évidement le générateur que je ne vois pas
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  18. #38
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    OUI, sauf bien évidement le générateur que je ne vois pas
    je parlais du générateur de l'ID de la table TB_INFO_PC

    Code sql : 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
    CREATE GENERATOR GEN_TB_INFO_PC_ID;
    
    CREATE TABLE TB_INFO_PC (
        ID               INTEGER NOT NULL,
        PC               VARCHAR(15),
        DATE_CON         TIMESTAMP,
        CONECT_DECONECT  VARCHAR(12)
    );
    
    
    ALTER TABLE TB_INFO_PC ADD CONSTRAINT CHK1_TB_INFO_PC CHECK (CONECT_DECONECT in ('CONNEXION','DECONNEXION'));
    ALTER TABLE TB_INFO_PC ADD CONSTRAINT PK_TB_INFO_PC PRIMARY KEY (ID);
    
    /* c'est de ça que je parlais */
    CREATE OR ALTER TRIGGER TB_INFO_PC_BI FOR TB_INFO_PC
    ACTIVE BEFORE INSERT POSITION 0
    as
    begin
      if (new.id is null) then
        new.id = gen_id(gen_tb_info_pc_id,1);
    end
    ^
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  19. #39
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    je parlais du générateur de l'ID de la table
    j'avais bien compris
    mais pour des tests je n'avais pas besoin de tout ça , il me suffisait de tout supprimer dans la table et revérifier
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  20. #40
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    j'avais bien compris
    mais pour des tests je n'avais pas besoin de tout ça , il me suffisait de tout supprimer dans la table et revérifier
    le comble c'est que j'ai supprimé les données de la table à plusieurs reprises mais pour le déconnexion ça ne marche toujours pas ?!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [Delphi - Firebird] Gestion des transactions
    Par Lili21 dans le forum Connexion aux bases de données
    Réponses: 9
    Dernier message: 20/04/2007, 17h34
  2. Delphi, Firebird et Vista
    Par obione dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/09/2006, 18h02
  3. Delphi, Firebird, et requetes longues ...
    Par shikami dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/09/2004, 19h04
  4. Delphi, Firebird, et lenteurs
    Par shikami dans le forum SQL
    Réponses: 2
    Dernier message: 22/09/2004, 18h08

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