OVH Cloud OVH Cloud

Requete cumulant les totaux

9 réponses
Avatar
Alain
Bonjour

J'ai une table: MaTable qui contient les champs suivants
Date Logiciel Mat=E9riel
13/02/05 100 50
25/02/05 80 10
30/03/05 70 60
12/04/05 10 30

Quelle est la syntaxe de la requete qui me donne le=20
tableau suivant:

P=E9riode CumulLogiciel CumulMateriel
F=E9v 05 180 60
Mar 05 250 120
Avr 05 260 150

Merci pour votre aide

9 réponses

Avatar
Gafish
Bonjour,

Tu te crées une nouvelle requête selection et tu ajoutes la table MaTable.
Tu cliques sur le bouton "opérations" (le sigma grec).
Tu crées un premier champ ou tu entres Mois([MaTable].[Date]) et dans la
liste opérations tu choisis "regroupement". Tu crées un deuxième champs où
tu entres Année([MaTable].[Date]) et idem tu choisis regroupement.
Tu selectionnes ensuites les champs logiciel et materiel pour lesquelles tu
choisis "somme" dans la liste opérations.

Arnaud

PS : evite d'appeler un champ "date" car c'est un nom reservé access

Alain wrote:
Bonjour

J'ai une table: MaTable qui contient les champs suivants
Date Logiciel Matériel
13/02/05 100 50
25/02/05 80 10
30/03/05 70 60
12/04/05 10 30

Quelle est la syntaxe de la requete qui me donne le
tableau suivant:

Période CumulLogiciel CumulMateriel
Fév 05 180 60
Mar 05 250 120
Avr 05 260 150

Merci pour votre aide


Avatar
Alain
Bonjour

J'ai suivi tes instructions mais le résultat n'est pas
celui que j'attend.
En effetj'obtiens un cumul mois par mois
Période CumulLogiciel CumulMateriel
Fév 05 180 60
Mar 05 70 60
Avr 05 10 30

Tandis que ce que je souhaite calculer le tatol sur un
mois et ajouter au mois en cours le montant du mois
précédant.

cdlt
Alain



-----Message d'origine-----
Bonjour,

Tu te crées une nouvelle requête selection et tu ajoutes
la table MaTable.

Tu cliques sur le bouton "opérations" (le sigma grec).
Tu crées un premier champ ou tu entres Mois([MaTable].
[Date]) et dans la

liste opérations tu choisis "regroupement". Tu crées un
deuxième champs où

tu entres Année([MaTable].[Date]) et idem tu choisis
regroupement.

Tu selectionnes ensuites les champs logiciel et materiel
pour lesquelles tu

choisis "somme" dans la liste opérations.

Arnaud

PS : evite d'appeler un champ "date" car c'est un nom
reservé access


Alain wrote:
Bonjour

J'ai une table: MaTable qui contient les champs suivants
Date Logiciel Matériel
13/02/05 100 50
25/02/05 80 10
30/03/05 70 60
12/04/05 10 30

Quelle est la syntaxe de la requete qui me donne le
tableau suivant:

Période CumulLogiciel CumulMateriel
Fév 05 180 60
Mar 05 250 120
Avr 05 260 150

Merci pour votre aide



.




Avatar
Eric
Bonjour Alain,

En sql ca donnerait en supposant que la table se nomme Alain ;-)

SELECT MonthName(Month([date])) AS Période,
DSum("Logiciel","Alain","Month(Date)<=" & Month([date])) AS
CumulLogiciel, DSum("Matériel","Alain","Month(Date)<=" & Month([date]))
AS CumulMateriel
FROM Alain
GROUP BY MonthName(Month([date])), Month([date])
ORDER BY Month([date]);

à copier dans la fenêtre SQL des requêtes.

A+
Eric

PS1 : Autre solution, en mode création de requête basée sur la table Alain
1er champ : Période: MonthName(Mois([date]))
2eme champ : CumulLogiciel: SomDom("Logiciel";"Alain";"Month(Date)<=" &
Mois([date]))
3eme champ : CumulMateriel: SomDom("Matériel";"Alain";"Month(Date)<=" &
Mois([date]))
4eme champ : Expr1: Mois([date])

Afficher pour les 3 premiers, Afficher décoché pour le 4eme.
Opérations : Regroupement pour le 1er et 4eme.
Opérations : Expression pour le 2e et 3eme.
Tri croissant pour le 4eme.


PS2 : Si tu veux afficher en numérique les cumuls alors utilises :
CumulLogiciel: CNum(SomDom("Logiciel";"Alain";"Month(Date)<=" &
Mois([date])))
CumulMateriel: CNum(SomDom("Matériel";"Alain";"Month(Date)<=" &
Mois([date])))


Bonjour

J'ai suivi tes instructions mais le résultat n'est pas
celui que j'attend.
En effetj'obtiens un cumul mois par mois
Période CumulLogiciel CumulMateriel
Fév 05 180 60
Mar 05 70 60
Avr 05 10 30

Tandis que ce que je souhaite calculer le tatol sur un
mois et ajouter au mois en cours le montant du mois
précédant.

cdlt
Alain




-----Message d'origine-----
Bonjour,

Tu te crées une nouvelle requête selection et tu ajoutes


la table MaTable.

Tu cliques sur le bouton "opérations" (le sigma grec).
Tu crées un premier champ ou tu entres Mois([MaTable].


[Date]) et dans la

liste opérations tu choisis "regroupement". Tu crées un


deuxième champs où

tu entres Année([MaTable].[Date]) et idem tu choisis


regroupement.

Tu selectionnes ensuites les champs logiciel et materiel


pour lesquelles tu

choisis "somme" dans la liste opérations.

Arnaud

PS : evite d'appeler un champ "date" car c'est un nom


reservé access

Alain wrote:

Bonjour

J'ai une table: MaTable qui contient les champs suivants
Date Logiciel Matériel
13/02/05 100 50
25/02/05 80 10
30/03/05 70 60
12/04/05 10 30

Quelle est la syntaxe de la requete qui me donne le
tableau suivant:

Période CumulLogiciel CumulMateriel
Fév 05 180 60
Mar 05 250 120
Avr 05 260 150

Merci pour votre aide



.






Avatar
Eric
.../...
Pour respecter la "casse" de la période, remplaces :

par : Période: MonthName(Mois([date]))

Période: ConvChaîne(Gauche(MonthName(Mois([date]));3);3) & " " &
Année([date])

ce qui donne en sql :
SELECT StrConv(Left(MonthName(Month([date])),3),3) & " " & Year([date])
AS Période, Val(DSum("Logiciel","Alain","Month(Date)<=" &
Month([date]))) AS CumulLogiciel,
Val(DSum("Matériel","Alain","Month(Date)<=" & Month([date]))) AS
CumulMateriel
FROM Alain
GROUP BY StrConv(Left(MonthName(Month([date])),3),3) & " " &
Year([date]), Month([date])
ORDER BY Month([date]);


De plus, suis entièrement d'accord avec Gafish pour le nom malheureux
attribué çà la date.

A+
Eric

Bonjour Alain,

En sql ca donnerait en supposant que la table se nomme Alain ;-)

SELECT MonthName(Month([date])) AS Période,
DSum("Logiciel","Alain","Month(Date)<=" & Month([date])) AS
CumulLogiciel, DSum("Matériel","Alain","Month(Date)<=" & Month([date]))
AS CumulMateriel
FROM Alain
GROUP BY MonthName(Month([date])), Month([date])
ORDER BY Month([date]);

à copier dans la fenêtre SQL des requêtes.

A+
Eric

PS1 : Autre solution, en mode création de requête basée sur la table Alain
1er champ : Période: MonthName(Mois([date]))
2eme champ : CumulLogiciel: SomDom("Logiciel";"Alain";"Month(Date)<=" &
Mois([date]))
3eme champ : CumulMateriel: SomDom("Matériel";"Alain";"Month(Date)<=" &
Mois([date]))
4eme champ : Expr1: Mois([date])

Afficher pour les 3 premiers, Afficher décoché pour le 4eme.
Opérations : Regroupement pour le 1er et 4eme.
Opérations : Expression pour le 2e et 3eme.
Tri croissant pour le 4eme.


PS2 : Si tu veux afficher en numérique les cumuls alors utilises :
CumulLogiciel: CNum(SomDom("Logiciel";"Alain";"Month(Date)<=" &
Mois([date])))
CumulMateriel: CNum(SomDom("Matériel";"Alain";"Month(Date)<=" &
Mois([date])))




Avatar
Alain
Merci Eric

Ta requete effectue éffectivement les cumuls
Par contre lorsque je l'execute, l'ordre du cumul est
l'ordre des mois sans tenir compte des années.

Quelle modif faut il y apporter ?

Pour info ma Table s'appelle : Projets
et mes champs sont:
PrixSoft
PrixHard
[Date Signature] = (que j'aurais du appeler DateSignature)

merci encore pour ron aide

@+
Alain



-----Message d'origine-----
..../...
Pour respecter la "casse" de la période, remplaces :

par : Période: MonthName(Mois([date]))

Période: ConvChaîne(Gauche(MonthName(Mois([date]));3);3)
& " " &

Année([date])

ce qui donne en sql :
SELECT StrConv(Left(MonthName(Month([date])),3),3) & " "
& Year([date])

AS Période, Val(DSum("Logiciel","Alain","Month(Date)<=" &
Month([date]))) AS CumulLogiciel,
Val(DSum("Matériel","Alain","Month(Date)<=" & Month
([date]))) AS

CumulMateriel
FROM Alain
GROUP BY StrConv(Left(MonthName(Month([date])),3),3)
& " " &

Year([date]), Month([date])
ORDER BY Month([date]);


De plus, suis entièrement d'accord avec Gafish pour le
nom malheureux

attribué çà la date.

A+
Eric

Bonjour Alain,

En sql ca donnerait en supposant que la table se nomme
Alain ;-)



SELECT MonthName(Month([date])) AS Période,
DSum("Logiciel","Alain","Month(Date)<=" & Month
([date])) AS


CumulLogiciel, DSum("Matériel","Alain","Month(Date)<="
& Month([date]))


AS CumulMateriel
FROM Alain
GROUP BY MonthName(Month([date])), Month([date])
ORDER BY Month([date]);

à copier dans la fenêtre SQL des requêtes.

A+
Eric

PS1 : Autre solution, en mode création de requête basée
sur la table Alain


1er champ : Période: MonthName(Mois([date]))
2eme champ : CumulLogiciel: SomDom
("Logiciel";"Alain";"Month(Date)<=" &


Mois([date]))
3eme champ : CumulMateriel: SomDom
("Matériel";"Alain";"Month(Date)<=" &


Mois([date]))
4eme champ : Expr1: Mois([date])

Afficher pour les 3 premiers, Afficher décoché pour le
4eme.


Opérations : Regroupement pour le 1er et 4eme.
Opérations : Expression pour le 2e et 3eme.
Tri croissant pour le 4eme.


PS2 : Si tu veux afficher en numérique les cumuls alors
utilises :


CumulLogiciel: CNum(SomDom("Logiciel";"Alain";"Month
(Date)<=" &


Mois([date])))
CumulMateriel: CNum(SomDom("Matériel";"Alain";"Month
(Date)<=" &


Mois([date])))


.





Avatar
Eric
Bonjour Alain,

Il faut mettre une restriction de plus dans la fonction SomDom()
du style :
CumulLogiciel: CNum(SomDom("PrixSoft";"Alain";"Month([Date
Signature])<=" & Mois([Date Signature]) & " and year([Date
Signature])=" & Année([Date Signature])))

et
CumulMateriel: CNum(SomDom("PrixHard";"Alain";"Month([Date
Signature])<=" & Mois([Date Signature]) & " and year([Date
Signature])=" & Année([Date Signature])))

De plus il faut que tu inseres, dans la requête, une colonne avant la
colonne calculant le rang du mois.
Année: Année([Date Signature])
Tri croissant
Afficher décoché

Les cumuls avec ces formules repartent à 0 pour chaque changement d'année.

A+
Eric



Merci Eric

Ta requete effectue éffectivement les cumuls
Par contre lorsque je l'execute, l'ordre du cumul est
l'ordre des mois sans tenir compte des années.

Quelle modif faut il y apporter ?

Pour info ma Table s'appelle : Projets
et mes champs sont:
PrixSoft
PrixHard
[Date Signature] = (que j'aurais du appeler DateSignature)

merci encore pour ron aide

@+
Alain




-----Message d'origine-----
..../...
Pour respecter la "casse" de la période, remplaces :

par : Période: MonthName(Mois([date]))

Période: ConvChaîne(Gauche(MonthName(Mois([date]));3);3)


& " " &

Année([date])

ce qui donne en sql :
SELECT StrConv(Left(MonthName(Month([date])),3),3) & " "


& Year([date])

AS Période, Val(DSum("Logiciel","Alain","Month(Date)<=" &
Month([date]))) AS CumulLogiciel,
Val(DSum("Matériel","Alain","Month(Date)<=" & Month


([date]))) AS

CumulMateriel

FROM Alain

GROUP BY StrConv(Left(MonthName(Month([date])),3),3)


& " " &

Year([date]), Month([date])
ORDER BY Month([date]);


De plus, suis entièrement d'accord avec Gafish pour le


nom malheureux

attribué çà la date.

A+
Eric


Bonjour Alain,

En sql ca donnerait en supposant que la table se nomme



Alain ;-)

SELECT MonthName(Month([date])) AS Période,
DSum("Logiciel","Alain","Month(Date)<=" & Month



([date])) AS

CumulLogiciel, DSum("Matériel","Alain","Month(Date)<="



& Month([date]))

AS CumulMateriel
FROM Alain
GROUP BY MonthName(Month([date])), Month([date])
ORDER BY Month([date]);

à copier dans la fenêtre SQL des requêtes.

A+
Eric

PS1 : Autre solution, en mode création de requête basée



sur la table Alain

1er champ : Période: MonthName(Mois([date]))
2eme champ : CumulLogiciel: SomDom



("Logiciel";"Alain";"Month(Date)<=" &

Mois([date]))
3eme champ : CumulMateriel: SomDom



("Matériel";"Alain";"Month(Date)<=" &

Mois([date]))
4eme champ : Expr1: Mois([date])

Afficher pour les 3 premiers, Afficher décoché pour le



4eme.

Opérations : Regroupement pour le 1er et 4eme.
Opérations : Expression pour le 2e et 3eme.
Tri croissant pour le 4eme.


PS2 : Si tu veux afficher en numérique les cumuls alors



utilises :

CumulLogiciel: CNum(SomDom("Logiciel";"Alain";"Month



(Date)<=" &

Mois([date])))
CumulMateriel: CNum(SomDom("Matériel";"Alain";"Month



(Date)<=" &

Mois([date])))




.






Avatar
Alain
Bonjour Eric

Tout d'abord encore merci pour ton aide précieuse

J'ai suivi tes conseils et je pense qu'on y est presque =
le seul pb c'est que mes totaux ne correspondent pas, je
pense peut être qu'il s'agit d'un pb de version de date
français et US


Voici mon tableau de valeurs mois / mois qui correspond à
la requete suivante :



SELECT (Format([Date Signature],"mmm"" '""yy")) AS
Période, Sum(Projets.PrixSoft) AS Logiciel, Sum
(Projets.PrixHard) AS Matériel
FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY (Format([Date Signature],"mmm"" '""yy")), (Year
([Date Signature])*12+Month([Date Signature])-1)
ORDER BY (Year([Date Signature])*12+Month([Date
Signature])-1);



Test 1

Période Logiciel Matériel
nov'04 2625
déc '04 5440 7441
janv '05 12522 6557
févr '05 17810 3250
mars '05 12875 1721
avr '05 8309 823


Et voici ce que j'obtiens avec ta requête => si je
regarde la colonne CumulLogiciel :

Nov et déc 2004 sont faux

Janv 2005 et Fév 2005 sont justes (c'est bien revenu à
zero en début d'année)

Mars 2005 et Avril 2005 sont faux


Période CumulLogiciel CumulMateriel
Nov 2004 144803 96647
Déc 2004 163843 106088
Jan 2005 12522 6557
Fév 2005 30332 9807
Mar 2005 45429 13798
Avr 2005 65187 28124

Ci-dessous ta requete correpondante

SELECT StrConv(Left(MonthName(Month([Date
Signature])),3),3) & " " & Year([Date Signature]) AS
Période, Val(DSum("PrixSoft","Projets","Month([Date
Signature])<=" & Month([Date Signature]))) AS
CumulLogiciel, Val(DSum("PrixHard","Projets","Month([Date
Signature])<=" & Month([Date Signature]))) AS CumulMateriel
FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY Year([Date Signature]), Month([Date Signature]),
StrConv(Left(MonthName(Month([Date Signature])),3),3)
& " " & Year([Date Signature])
ORDER BY Year([Date Signature]), Month([Date Signature]);



As-tu une idée sur l'origine du pb ?

Encore merci pour ton aide et ta gentillesse

@+

Alain


-----Message d'origine-----
Bonjour Alain,

Il faut mettre une restriction de plus dans la fonction
SomDom()

du style :
CumulLogiciel: CNum(SomDom("PrixSoft";"Alain";"Month
([Date

Signature])<=" & Mois([Date Signature]) & " and year
([Date

Signature])=" & Année([Date Signature])))

et
CumulMateriel: CNum(SomDom("PrixHard";"Alain";"Month
([Date

Signature])<=" & Mois([Date Signature]) & " and year
([Date

Signature])=" & Année([Date Signature])))

De plus il faut que tu inseres, dans la requête, une
colonne avant la

colonne calculant le rang du mois.
Année: Année([Date Signature])
Tri croissant
Afficher décoché

Les cumuls avec ces formules repartent à 0 pour chaque
changement d'année.


A+
Eric



Merci Eric

Ta requete effectue éffectivement les cumuls
Par contre lorsque je l'execute, l'ordre du cumul est
l'ordre des mois sans tenir compte des années.

Quelle modif faut il y apporter ?

Pour info ma Table s'appelle : Projets
et mes champs sont:
PrixSoft
PrixHard
[Date Signature] = (que j'aurais du appeler
DateSignature)



merci encore pour ron aide

@+
Alain




-----Message d'origine-----
..../...
Pour respecter la "casse" de la période, remplaces :

par : Période: MonthName(Mois([date]))

Période: ConvChaîne(Gauche(MonthName(Mois
([date]));3);3)




& " " &

Année([date])

ce qui donne en sql :
SELECT StrConv(Left(MonthName(Month([date])),3),3)
& " "




& Year([date])

AS Période, Val(DSum("Logiciel","Alain","Month(Date)<="
&



Month([date]))) AS CumulLogiciel,
Val(DSum("Matériel","Alain","Month(Date)<=" & Month


([date]))) AS

CumulMateriel

FROM Alain

GROUP BY StrConv(Left(MonthName(Month([date])),3),3)


& " " &

Year([date]), Month([date])
ORDER BY Month([date]);


De plus, suis entièrement d'accord avec Gafish pour le


nom malheureux

attribué çà la date.

A+
Eric


Bonjour Alain,

En sql ca donnerait en supposant que la table se nomme



Alain ;-)

SELECT MonthName(Month([date])) AS Période,
DSum("Logiciel","Alain","Month(Date)<=" & Month



([date])) AS

CumulLogiciel, DSum("Matériel","Alain","Month(Date)<="



& Month([date]))

AS CumulMateriel
FROM Alain
GROUP BY MonthName(Month([date])), Month([date])
ORDER BY Month([date]);

à copier dans la fenêtre SQL des requêtes.

A+
Eric

PS1 : Autre solution, en mode création de requête
basée





sur la table Alain

1er champ : Période: MonthName(Mois([date]))
2eme champ : CumulLogiciel: SomDom



("Logiciel";"Alain";"Month(Date)<=" &

Mois([date]))
3eme champ : CumulMateriel: SomDom



("Matériel";"Alain";"Month(Date)<=" &

Mois([date]))
4eme champ : Expr1: Mois([date])

Afficher pour les 3 premiers, Afficher décoché pour le



4eme.

Opérations : Regroupement pour le 1er et 4eme.
Opérations : Expression pour le 2e et 3eme.
Tri croissant pour le 4eme.


PS2 : Si tu veux afficher en numérique les cumuls
alors





utilises :

CumulLogiciel: CNum(SomDom("Logiciel";"Alain";"Month



(Date)<=" &

Mois([date])))
CumulMateriel: CNum(SomDom("Matériel";"Alain";"Month



(Date)<=" &

Mois([date])))




.

.








Avatar
Eric
Bonsoir Alain,

A premiere vue, c'est normal d'obtenir des résultats différents puisque
tu as un critère restrictif supplémentaire : les projets dont le statut
est 4 (ta clause Where Projets.Statut='4'). Donc dans les fonctions
DSum() il faudrait aussi ajouter ce critère.

De plus, je remarque que tu n'as pas modifié les criteres des Dsum()
incorporant l'année, je suppose que c'est une erreur de copier-coller ?


En tenant compte du nouveau critere, le sql devient (à copier-coller
dans la fenetre SQL du concepteur de requête, les noms de la table et
des champs doivent être bons, j'ai adapté) :

SELECT StrConv(Left(MonthName(Month([Date Signature])),3),3) & " " &
Year([Date Signature]) AS Période,
Val(DSum("PrixSoft","Projets","Month([Date Signature])<=" & Month([Date
Signature]) & " and year([Date Signature])=" & Year([Date Signature]) &
" And Statut = '4'")) AS CumulLogiciel,
Val(DSum("PrixHard","Projets","Month([Date Signature])<=" & Month([Date
Signature]) & " and year([Date Signature])=" & Year([Date Signature]) &
" and statut='4'")) AS CumulMateriel
FROM Projets
GROUP BY StrConv(Left(MonthName(Month([Date Signature])),3),3) & " " &
Year([Date Signature]), Year([Date Signature]), Month([Date Signature])
ORDER BY Year([Date Signature]), Month([Date Signature]);

A+
Eric

Bonjour Eric

Tout d'abord encore merci pour ton aide précieuse

J'ai suivi tes conseils et je pense qu'on y est presque =
le seul pb c'est que mes totaux ne correspondent pas, je
pense peut être qu'il s'agit d'un pb de version de date
français et US


Voici mon tableau de valeurs mois / mois qui correspond à
la requete suivante :



SELECT (Format([Date Signature],"mmm"" '""yy")) AS
Période, Sum(Projets.PrixSoft) AS Logiciel, Sum
(Projets.PrixHard) AS Matériel
FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY (Format([Date Signature],"mmm"" '""yy")), (Year
([Date Signature])*12+Month([Date Signature])-1)
ORDER BY (Year([Date Signature])*12+Month([Date
Signature])-1);



Test 1

Période Logiciel Matériel
nov'04 2625
déc '04 5440 7441
janv '05 12522 6557
févr '05 17810 3250
mars '05 12875 1721
avr '05 8309 823


Et voici ce que j'obtiens avec ta requête => si je
regarde la colonne CumulLogiciel :

Nov et déc 2004 sont faux

Janv 2005 et Fév 2005 sont justes (c'est bien revenu à
zero en début d'année)

Mars 2005 et Avril 2005 sont faux


Période CumulLogiciel CumulMateriel
Nov 2004 144803 96647
Déc 2004 163843 106088
Jan 2005 12522 6557
Fév 2005 30332 9807
Mar 2005 45429 13798
Avr 2005 65187 28124

Ci-dessous ta requete correpondante

SELECT StrConv(Left(MonthName(Month([Date
Signature])),3),3) & " " & Year([Date Signature]) AS
Période, Val(DSum("PrixSoft","Projets","Month([Date
Signature])<=" & Month([Date Signature]))) AS
CumulLogiciel, Val(DSum("PrixHard","Projets","Month([Date
Signature])<=" & Month([Date Signature]))) AS CumulMateriel
FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY Year([Date Signature]), Month([Date Signature]),
StrConv(Left(MonthName(Month([Date Signature])),3),3)
& " " & Year([Date Signature])
ORDER BY Year([Date Signature]), Month([Date Signature]);



As-tu une idée sur l'origine du pb ?

Encore merci pour ton aide et ta gentillesse

@+

Alain



-----Message d'origine-----
Bonjour Alain,

Il faut mettre une restriction de plus dans la fonction


SomDom()

du style :
CumulLogiciel: CNum(SomDom("PrixSoft";"Alain";"Month


([Date

Signature])<=" & Mois([Date Signature]) & " and year


([Date

Signature])=" & Année([Date Signature])))

et
CumulMateriel: CNum(SomDom("PrixHard";"Alain";"Month


([Date

Signature])<=" & Mois([Date Signature]) & " and year


([Date

Signature])=" & Année([Date Signature])))

De plus il faut que tu inseres, dans la requête, une


colonne avant la

colonne calculant le rang du mois.
Année: Année([Date Signature])
Tri croissant
Afficher décoché

Les cumuls avec ces formules repartent à 0 pour chaque


changement d'année.

A+
Eric







Avatar
Alain
SUPER ...ça marche ...Bravo

Juste une dernière question ....
Que faut il modifier pour réinitialiser les calculs à
partir d'un autre mois que janvier ?

Encore merci pour ton aide
@+
Alain



-----Message d'origine-----
Bonsoir Alain,

A premiere vue, c'est normal d'obtenir des résultats
différents puisque

tu as un critère restrictif supplémentaire : les projets
dont le statut

est 4 (ta clause Where Projets.Statut='4'). Donc dans les
fonctions

DSum() il faudrait aussi ajouter ce critère.

De plus, je remarque que tu n'as pas modifié les
criteres des Dsum()

incorporant l'année, je suppose que c'est une erreur de
copier-coller ?



En tenant compte du nouveau critere, le sql devient (à
copier-coller

dans la fenetre SQL du concepteur de requête, les noms de
la table et

des champs doivent être bons, j'ai adapté) :

SELECT StrConv(Left(MonthName(Month([Date
Signature])),3),3) & " " &

Year([Date Signature]) AS Période,
Val(DSum("PrixSoft","Projets","Month([Date Signature])<="
& Month([Date

Signature]) & " and year([Date Signature])=" & Year
([Date Signature]) &

" And Statut = '4'")) AS CumulLogiciel,
Val(DSum("PrixHard","Projets","Month([Date Signature])<="
& Month([Date

Signature]) & " and year([Date Signature])=" & Year
([Date Signature]) &

" and statut='4'")) AS CumulMateriel
FROM Projets
GROUP BY StrConv(Left(MonthName(Month([Date
Signature])),3),3) & " " &

Year([Date Signature]), Year([Date Signature]), Month
([Date Signature])

ORDER BY Year([Date Signature]), Month([Date Signature]);

A+
Eric

Bonjour Eric

Tout d'abord encore merci pour ton aide précieuse

J'ai suivi tes conseils et je pense qu'on y est presque
=


le seul pb c'est que mes totaux ne correspondent pas,
je


pense peut être qu'il s'agit d'un pb de version de date
français et US


Voici mon tableau de valeurs mois / mois qui correspond
à


la requete suivante :



SELECT (Format([Date Signature],"mmm"" '""yy")) AS
Période, Sum(Projets.PrixSoft) AS Logiciel, Sum
(Projets.PrixHard) AS Matériel
FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY (Format([Date Signature],"mmm"" '""yy")), (Year
([Date Signature])*12+Month([Date Signature])-1)
ORDER BY (Year([Date Signature])*12+Month([Date
Signature])-1);



Test 1

Période Logiciel Matériel
nov'04 2625
déc '04 5440 7441
janv '05 12522 6557
févr '05 17810 3250
mars '05 12875 1721
avr '05 8309 823


Et voici ce que j'obtiens avec ta requête => si je
regarde la colonne CumulLogiciel :

Nov et déc 2004 sont faux

Janv 2005 et Fév 2005 sont justes (c'est bien revenu à
zero en début d'année)

Mars 2005 et Avril 2005 sont faux



Période CumulLogiciel CumulMateriel
Nov 2004 144803 96647
Déc 2004 163843 106088
Jan 2005 12522 6557
Fév 2005 30332 9807
Mar 2005 45429 13798
Avr 2005 65187 28124

Ci-dessous ta requete correpondante

SELECT StrConv(Left(MonthName(Month([Date
Signature])),3),3) & " " & Year([Date Signature]) AS
Période, Val(DSum("PrixSoft","Projets","Month([Date
Signature])<=" & Month([Date Signature]))) AS
CumulLogiciel, Val(DSum("PrixHard","Projets","Month
([Date


Signature])<=" & Month([Date Signature]))) AS
CumulMateriel


FROM Projets
WHERE (((Projets.Statut)='4'))
GROUP BY Year([Date Signature]), Month([Date
Signature]),


StrConv(Left(MonthName(Month([Date Signature])),3),3)
& " " & Year([Date Signature])
ORDER BY Year([Date Signature]), Month([Date
Signature]);





As-tu une idée sur l'origine du pb ?

Encore merci pour ton aide et ta gentillesse

@+

Alain



-----Message d'origine-----
Bonjour Alain,

Il faut mettre une restriction de plus dans la fonction


SomDom()

du style :
CumulLogiciel: CNum(SomDom("PrixSoft";"Alain";"Month


([Date

Signature])<=" & Mois([Date Signature]) & " and year


([Date

Signature])=" & Année([Date Signature])))

et
CumulMateriel: CNum(SomDom("PrixHard";"Alain";"Month


([Date

Signature])<=" & Mois([Date Signature]) & " and year


([Date

Signature])=" & Année([Date Signature])))

De plus il faut que tu inseres, dans la requête, une


colonne avant la

colonne calculant le rang du mois.
Année: Année([Date Signature])
Tri croissant
Afficher décoché

Les cumuls avec ces formules repartent à 0 pour chaque


changement d'année.

A+
Eric



.