OVH Cloud OVH Cloud

Requête regroupement

6 réponses
Avatar
Luis
Bonjour,
J'ai une requ=EAte regroupement pour tirer le CA par mois:

SELECT Month([JourTache]) AS MoisTache, Year([JourTache])=20
AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS=20
SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient,=20
Format([JourTache],"mmmm") AS Expr1
FROM tblSaisieHeures INNER JOIN tblcontrats ON=20
tblSaisieHeures.NCONTRAT =3D tblcontrats.NCONTRAT
GROUP BY Month([JourTache]), Year([JourTache]), Format
([JourTache],"mmmm")
ORDER BY Month([JourTache]), Year([JourTache]) DESC;

C'est bien car je peux comparer les chiffres d'affaires.
J'aimerai savoir comment rajouter une fonction qui me cr=E9e=20
une table par ann=E9e avec le CA par mois, sans devoir le=20
cr=E9er =E0 l'avance et que les chiffres se saisissent dans=20
cette table sans autre op=E9ration.

Merci pour vos conseils.
Luis

6 réponses

Avatar
Eric
Bonjour Luis,

En supposant que j'ai bien compris, tu souhaites à partir de cette
requête créer 2 tables ou + regroupant les infos par année. C'est ca ?

Si c'est le cas, tu peux créer une procédure comme celle-ci:
(Charger les référence Microsoft DAO 3.x Library)

On vérifie si les tables n'existent pas au lancement de cette procédure.
(les tables seront nommées Recap suivi du rang de l'année)

Sub CreationTableRecap()
Dim strSQL As String, strSQL1 As String
Dim rst As DAO.Recordset, tbl As DAO.TableDef
' on verifie si les tables n'existent pas déjà
' si Oui, on les supprime
For Each tbl In CurrentDb.TableDefs
If Left(tbl.Name, 5) = "Recap" Then
CurrentDb.TableDefs.Delete tbl.Name
End If
Next tbl
' Recherche des années servant de suffixe aux tables à créer
strSQL1 = "SELECT DISTINCT Year([JourTache]) AS Annee "
strSQL1 = strSQL1 & "FROM tblSaisieHeures ORDER BY Year
([datefacture]);"
Set rst = CurrentDb.OpenRecordset(strSQL1)
' Création des dites tables : Ex Recap2003, Recap2004 ...
While Not rst.EOF
strSQL ="Month([JourTache]) AS MoisTache, Year([JourTache]) "
strSQL = strSQL & "AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS "
strSQL = strSQL & "SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS
CoutRevient, "
strSQL = strSQL & "Format([JourTache],"mmmm") AS Expr1 INTO RECAP" &
rst(0) & " "
strSQL = strSQL & "FROM tblSaisieHeures INNER JOIN tblcontrats ON "
strSQL = strSQL & "tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT "
strSQL = strSQL & "GROUP BY Month([JourTache]), Year([JourTache]), "
strSQL = strSQL & "Format([JourTache],"mmmm") "
strSQL = strSQL & "Having year([JourTache])=" & rst(0) & " "
strSQL = strSQL & "ORDER BY Month([JourTache]), Year([JourTache])
DESC;
CurrentDb.Execute strSQL
rst.MoveNext
Wend
Set rst = Nothing
End Sub

J'ai utilisé ton code sql sans le retravailler, juste les modifs pour en
faire une requête de création de table. Donc à toi de voir es champs
inutiles à conserver ...

A+
Eric

"Luis" écrivait news:099e01c47aeb
$5b315740$:

Bonjour,
J'ai une requête regroupement pour tirer le CA par mois:

SELECT Month([JourTache]) AS MoisTache, Year([JourTache])
AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS
SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient,
Format([JourTache],"mmmm") AS Expr1
FROM tblSaisieHeures INNER JOIN tblcontrats ON
tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT
GROUP BY Month([JourTache]), Year([JourTache]), Format
([JourTache],"mmmm")
ORDER BY Month([JourTache]), Year([JourTache]) DESC;

C'est bien car je peux comparer les chiffres d'affaires.
J'aimerai savoir comment rajouter une fonction qui me crée
une table par année avec le CA par mois, sans devoir le
créer à l'avance et que les chiffres se saisissent dans
cette table sans autre opération.

Merci pour vos conseils.
Luis




Avatar
Eric
.../...

Corriger Year([DateFacture]) par Year([JourTache]) dans strSQL1.

En espérant qu'il n' y a pas d'autres erreurs

Eric
Avatar
Eric
arg !!!!
Probleme de copier-coller

Manque le SELECT au début du strSQL.

strSQL ="SELECT Month([JourTache]) ...

Eric

PS: pour les autres, je te laisse faire
Avatar
Raymond [mvp]
Bonjour Eric.

Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors
arrête le petit blanc de 9h.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
arg !!!!


Avatar
Eric
Bonjour Raymond,

Me suis trompé où car là je vois pas.
Merci de ta réponse

Eric

"Raymond [mvp]" écrivait news:O4tDYS4eEHA.3916
@TK2MSFTNGP11.phx.gbl:

Bonjour Eric.

Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors
arrête le petit blanc de 9h.


Avatar
Raymond [mvp]
C'était pour les 3 posts successifs, je n'ai rien lu.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
Bonjour Raymond,

Me suis trompé où car là je vois pas.
Merci de ta réponse

Eric