Comment calculer et ajouter un champ cumul dans une table ou une requête (Access 2003), merci
Page 1 sur 1
Calculer un cumul dans access
#2
Posté 16 mai 2008 - 04:50
Bonsoir, (23h 55)
Méthode utilisant la Fonction de Domaine DSUM :
Méthode SQL :
Mais attention aux risques d'erreurs. Pour ces deux exemples, les doublons ne seront pas pris en compte.
********************************************************************************
Pour pallier à ce désagrément, nous allons faire appel à un deuxième champ :
********************************************************************************
Ou, ma préférence, avec un peu de VBA.
Dans un module :
La requête-->qry_Exemple4 :
Cordialement.
Méthode utilisant la Fonction de Domaine DSUM :
CODE
SELECT tbl_Exemple.ChampExemple,
Val(DSum("ChampExemple","tbl_Exemple","ChampExemple <=" & [ChampExemple])) AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ChampExemple;
Val(DSum("ChampExemple","tbl_Exemple","ChampExemple <=" & [ChampExemple])) AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ChampExemple;
Méthode SQL :
CODE
SELECT T1.ChampExemple, (SELECT SUM(ChampExemple)
FROM tbl_Exemple 2
WHERE ChampExemple <= T1.ChampExemple) AS Cumul
FROM tbl_Exemple AS T1
ORDER BY T1.ChampExemple;
FROM tbl_Exemple 2
WHERE ChampExemple <= T1.ChampExemple) AS Cumul
FROM tbl_Exemple AS T1
ORDER BY T1.ChampExemple;
Mais attention aux risques d'erreurs. Pour ces deux exemples, les doublons ne seront pas pris en compte.
********************************************************************************
Pour pallier à ce désagrément, nous allons faire appel à un deuxième champ :
CODE
SELECT tbl_Exemple.ID, tbl_Exemple.ChampExemple,
DSum("ChampExemple","tbl_Exemple","ID <=" & [ID]) AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;
DSum("ChampExemple","tbl_Exemple","ID <=" & [ID]) AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;
********************************************************************************
Ou, ma préférence, avec un peu de VBA.
Dans un module :
CODE
Function CumulQry(Clef As String, ClefValeur, _
ChampCumul As String, Table As String)
Dim RS As DAO.Recordset
On Error GoTo Err_CumulQry
CumulQry = 0
Set RS = CurrentDb().OpenRecordset(Table, dbOpenDynaset)
Select Case RS.Fields(Clef).Type
' La clef est Numérique?
Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, _
DB_DOUBLE, DB_BYTE
RS.FindFirst "[" & Clef & "] = " & ClefValeur
' La clef est de type Date/Heure?
Case DB_DATE
RS.FindFirst "[" & Clef & "] = #" & Format(ClefValeur, _
"mm/dd/yyyy") & "#"
' La clef est de type Texte?
Case DB_TEXT
RS.FindFirst "[" & Clef & "] = '" & ClefValeur & "'"
Case Else
MsgBox "ERREUR : Le type de données de la clef n'est pas valide!"
Exit Function
End Select
Do Until RS.BOF
CumulQry = CumulQry + RS(ChampCumul)
RS.MovePrevious
Loop
Set RS = Nothing
Stop_CumulQry:
Exit Function
Err_CumulQry:
Resume Stop_CumulQry
End Function
ChampCumul As String, Table As String)
Dim RS As DAO.Recordset
On Error GoTo Err_CumulQry
CumulQry = 0
Set RS = CurrentDb().OpenRecordset(Table, dbOpenDynaset)
Select Case RS.Fields(Clef).Type
' La clef est Numérique?
Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, _
DB_DOUBLE, DB_BYTE
RS.FindFirst "[" & Clef & "] = " & ClefValeur
' La clef est de type Date/Heure?
Case DB_DATE
RS.FindFirst "[" & Clef & "] = #" & Format(ClefValeur, _
"mm/dd/yyyy") & "#"
' La clef est de type Texte?
Case DB_TEXT
RS.FindFirst "[" & Clef & "] = '" & ClefValeur & "'"
Case Else
MsgBox "ERREUR : Le type de données de la clef n'est pas valide!"
Exit Function
End Select
Do Until RS.BOF
CumulQry = CumulQry + RS(ChampCumul)
RS.MovePrevious
Loop
Set RS = Nothing
Stop_CumulQry:
Exit Function
Err_CumulQry:
Resume Stop_CumulQry
End Function
La requête-->qry_Exemple4 :
CODE
SELECT tbl_Exemple.ID, tbl_Exemple.ChampExemple,
CumulQry("ID",[ID],"ChampExemple","qry_Exemple4") AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;
CumulQry("ID",[ID],"ChampExemple","qry_Exemple4") AS Cumul
FROM tbl_Exemple
ORDER BY tbl_Exemple.ID;
Cordialement.
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
...............................................................................Sacha Guitry
Page 1 sur 1


Connexion
Inscription
Aide
Retour en haut
Multi-citation