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

SQL Firebird Discussion :

Déclencheur je présume


Sujet :

SQL Firebird

  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 SergioMaster Voir le message
    Je suis têtu.
    A cet âge, on l'est tous

    Citation Envoyé par SergioMaster Voir le message
    Je suis têtu.
    et Je prouve que c'est possible avec une Version FB3 et plus
    j'ai jamais dis le contraire et je sais que vous êtes un AS.

    Citation Envoyé par SergioMaster Voir le message
    Avec des excuses de votre part, vous aurez même droit au SQL
    Ben désolé.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #22
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    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 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select ID_MOUV,DATE_MOUV,NATURE_OP,
           IIF(NATURE_OP='R',MONTANT,MONTANT*-1) MONTANT,
           sum(IIF(NATURE_OP='R',MONTANT,MONTANT*-1)) over (order by ID_MOUV) SOLDE
    from TB_MOUVEMENTS 
    ORDER BY ID_MOUV
    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

  3. #23
    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
    merci ça à l'air sympa comme code si ce n'est ce "over" qui n'est pas reconnu dans la version 2.5

    Edit : s'était mentionné dans l'une de tes réponses mais j'avais loupé ça
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #24
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    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 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Aucunement dans la question il n'a été indiqué la version de Firebird.

    2.5 n'est plus maintenue.

    Avec les versions inférieures à FB3 une procédure (pas un Trigger comme indiqué dans le titre de la discussion) peut faire l'affaire
    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
    SET TERM ^ ;
    CREATE OR ALTER PROCEDURE SOLDE_MVT (
        DATE_FROM DATE,
        DATE_TO DATE,
        SOLDE_DEBUT DOUBLE PRECISION DEFAULT 0)
    RETURNS (
        ID_MOUV INTEGER NOT NULL,
        DATE_MOUV TIMESTAMP NOT NULL,
        NATURE_OP VARCHAR(1),
        MONTANT DOUBLE PRECISION,
        SOLDE DOUBLE PRECISION )
     
    AS
    BEGIN
    SOLDE=SOLDE_DEBUT;
    FOR select ID_MOUV,DATE_MOUV,NATURE_OP,IIF(NATURE_OP='R',MONTANT,MONTANT*-1)
     from TB_MOUVEMENTS
    WHERE CAST(DATE_MOUV as date) BETWEEN :DATE_FROM AND :DATE_TO
     ORDER BY ID_MOUV 
     INTO :ID_MOUV,:DATE_MOUV,:NATURE_OP,:MONTANT
    DO BEGIN
      SOLDE=SOLDE+MONTANT;
      SUSPEND;  
    END 
    END
    ^
    SET TERM ; ^
    Utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM SOLDE_MVT('2023.08.21','2023.08.21')
    Pourquoi un paramètre SOLDE_DEBUT ? Pas obligatoire, pourrait être calculé par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select SUM(IIF(NATURE_OP='R',MONTANT,MONTANT*-1))
     from TB_MOUVEMENTS
    WHERE CAST(DATE_MOUV as date) < :DATE_FROM
    petit avantage de la procédure par rapport à la requête avec fenêtrage
    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

  5. #25
    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
    Avec les versions inférieures à FB3 une procédure (pas un Trigger comme indiqué dans le titre de la discussion) peut faire l'affaire
    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
    SET TERM ^ ;
    CREATE OR ALTER PROCEDURE SOLDE_MVT (
        DATE_FROM DATE,
        DATE_TO DATE,
        SOLDE_DEBUT DOUBLE PRECISION DEFAULT 0)
    RETURNS (
        ID_MOUV INTEGER NOT NULL,
        DATE_MOUV TIMESTAMP NOT NULL,
        NATURE_OP VARCHAR(1),
        MONTANT DOUBLE PRECISION,
        SOLDE DOUBLE PRECISION )
     
    AS
    BEGIN
    SOLDE=SOLDE_DEBUT;
    FOR select ID_MOUV,DATE_MOUV,NATURE_OP,IIF(NATURE_OP='R',MONTANT,MONTANT*-1)
     from TB_MOUVEMENTS
    WHERE CAST(DATE_MOUV as date) BETWEEN :DATE_FROM AND :DATE_TO
     ORDER BY ID_MOUV 
     INTO :ID_MOUV,:DATE_MOUV,:NATURE_OP,:MONTANT
    DO BEGIN
      SOLDE=SOLDE+MONTANT;
      SUSPEND;  
    END 
    END
    ^
    SET TERM ; ^
    :

    C'est impeccable merci.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Erreur dans le déclencheur on-check-delete-master
    Par rvfranck dans le forum Oracle
    Réponses: 4
    Dernier message: 19/11/2004, 10h53
  2. déclencheurs qui ne se lancent pas - pb messages
    Par marie253 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/08/2004, 15h19
  3. déclencheur et message d'erreur
    Par marie253 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2004, 16h00
  4. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  5. déclencheur/trigger
    Par seb92 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/07/2004, 17h12

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