Le rΘsultat est la diffΘrence entre la somme des comptes classe 6 et 7.
Il faut donc un tableau affichant mois par mois le total des sommes de ces deux classes.
Nous allons utiliser l'Θditeur SQL inclu avec FastCompta pour, en tΓtonnant un peu, arriver au rΘsultat dΘsirΘ.
Exemple simple: Trouver l'index de l'exercice
Pour nos tests, nous avons besoin de connaitre l'index de l'exercice afin de limiter le rΘsultat α l'exercice actuel.Ouvrez l'Θditeur SQL:
L'Θditeur s'affiche alors.
Pour la description complΦte de l'Θditeur, voyez ce chapitre
Tapez cette requΩte:
SELECT * FROM EXERCICE
et cliquez sur
Notez le chiffre dans la colonne INDX sur la ligne de l'exercice actuel.
Mettre au point la requΩte.
Si vous faites partie des gens capable d'Θcrire d'un seul trait une requΩte SQL complexe comme celle obtenue au final, bravo. Sinon, j'ai inscrit ci-dessous la dΘmarche que j'adopte gΘnΘralement: Partir d'un cas simple et ajouter des clauses de plus en plus complexes.En partant de:
SELECT * FROM LIGNES L
JOIN COMPTES C ON C.INDX=L.INDX_CPT AND
(C.LIB_COURT STARTING WITH '6' OR C.LIB_COURT STARTING WITH '7')
on arrive aprΦs un peu de rΘflexion αJOIN COMPTES C ON C.INDX=L.INDX_CPT AND
(C.LIB_COURT STARTING WITH '6' OR C.LIB_COURT STARTING WITH '7')
SELECT SUM(MONTANT),SENS,JM.MOIS,JM.NOMOIS FROM LIGNES L
JOIN COMPTES C ON C.INDX=L.INDX_CPT AND C.LIB_COURT STARTING WITH '7'
JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
GROUP BY MOIS,NOMOIS,SENS
ORDER BY NOMOIS
cette requΩte donnant la somme des lignes par mois et sens pour la classe 7.JOIN COMPTES C ON C.INDX=L.INDX_CPT AND C.LIB_COURT STARTING WITH '7'
JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M
GROUP BY MOIS,NOMOIS,SENS
ORDER BY NOMOIS
Au final, nous aurons:
- Une requΩte Maεtre donnant les mois de l'exercice.
- Quatres requΩtes esclaves prenant comme paramΦtre l'exercice et le mois:
- Classe 6 CrΘdit
- Classe 6 DΘbit
- Classe 7 CrΘdit
- Classe 7 DΘbit
Dans le gΘnΘrateur d'Θtat, nous dΘsirons une ligne par mois de l'exercice, et quatres totaux pour chaque ligne. Le plus simple est de faire quatres requΩtes en passant le mois et l'exercice en paramΦtre. On modifie la requΩte:
SELECT SUM(MONTANT) FROM LIGNES L
JOIN COMPTES C ON C.INDX=L.INDX_CPT AND C.LIB_COURT STARTING WITH '6'
JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M AND JM.NOMOIS=0
WHERE L.INDXE=1 AND L.SENS='D'
en rentrant directement le n░ du mois (0) et l'index de l'exercice (1). Dans l'Θtat final, ces valeurs seront extraites d'autres requΩtes ou de variables.JOIN COMPTES C ON C.INDX=L.INDX_CPT AND C.LIB_COURT STARTING WITH '6'
JOIN MOUVEMENTS M ON M.INDX=L.INDX_MVT
JOIN JOURNAL_MOIS JM ON JM.INDX=M.INDX_JOURNAL_M AND JM.NOMOIS=0
WHERE L.INDXE=1 AND L.SENS='D'
Pour les 3 autres requΩtes, on remplacera '6' par '7' et 'D' par 'C' (voir page suivante)
Passons au gΘnΘrateur d'Θtat