Bon courage ou Bonne Chance (selon le contexte)
Mon blog sur WordPress
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
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
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
Utilisation
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 ; ^
Pourquoi un paramètre SOLDE_DEBUT ? Pas obligatoire, pourrait être calculé par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM SOLDE_MVT('2023.08.21','2023.08.21')
petit avantage de la procédure par rapport à la requête avec fenêtrage
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
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
Bon courage ou Bonne Chance (selon le contexte)
Mon blog sur WordPress
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager