Cumul dans une requête
Le
C15
Bonsoir à toutes et à tous,
Il y a bien longtemps déjà, j'avais trouvé sur ce site une formule pour
faire le cumul (d'une ligne à l'autre) dans une requête.
Je l'ai appliqué dans une requête pour calculer le salaire cumulé par
catégorie de personnel.
Cumul:
CDbl(SomDom("[TSalariés]![Salaire]";"[TSalariés]";"[TSalariés]![CodeCategorie]<="
& [TSalariés]![CodeCategorie]))
Cela marche parfaitement mais je n'arrive pas à l'expliquer clairement à un
copain qui en a besoin.
Est-ce que quelqu'un pourrait en quelques mots m'expliquer cette syntaxe et
en particulier pourquoi je dois utiliser la fonction CDBL qui seule me
permet de définir un format de type numérique.
Merci de votre aide
A+
C15
Il y a bien longtemps déjà, j'avais trouvé sur ce site une formule pour
faire le cumul (d'une ligne à l'autre) dans une requête.
Je l'ai appliqué dans une requête pour calculer le salaire cumulé par
catégorie de personnel.
Cumul:
CDbl(SomDom("[TSalariés]![Salaire]";"[TSalariés]";"[TSalariés]![CodeCategorie]<="
& [TSalariés]![CodeCategorie]))
Cela marche parfaitement mais je n'arrive pas à l'expliquer clairement à un
copain qui en a besoin.
Est-ce que quelqu'un pourrait en quelques mots m'expliquer cette syntaxe et
en particulier pourquoi je dois utiliser la fonction CDBL qui seule me
permet de définir un format de type numérique.
Merci de votre aide
A+
C15

Poser une question


la fonction CDbl n'est pas du tout obligatoire avec le somdom sauf pour
obtenir spécialement un résultat en type double. à mon avis le résultat doit
déjà être en type double par défaut.
sinon:
[TSalariés]![Salaire] indique le champ de la table qu'il faut additionner.
indiquer le nom de la table n'est pas obligatoire ainsi que les [ ] si le
nom ne comporte aucun caractère spécial.
"Salaire" est suffisant.
[TSalariés] indique le nom de la table dans laquelle se trouve le champ
ci-dessus.
indiquer les [ ] si le nom ne comporte aucun caractère spécial n'est pas
obligatoire.
"TSalariés" est suffisant.
"[TSalariés]![CodeCategorie]<=" & [TSalariés]![CodeCategorie] indique le
critère de sélection des enregistrements (clause where sans le mot where).
comme pour le reste indiquer le nom de la table n'est pas obligatoire.
"[CodeCategorie]<=" & [TSalariés]![CodeCategorie]
[CodeCategorie] indique le champ du critère et [TSalariés]![CodeCategorie]
indique la valeur du contrôle du formulaire [TSalariés]. ce qui semble
bizarre que le formulaire porte le même nom que la table ce qui peut
provoquer des confusions.
il y a un test qui a été omis dans cette fonction. Il faut tester si la
valeur additionnée n'est pas nulle car dans ce cas la donnée retournée par
le somdom risque d'être Null.
Nz(SomDom("[TSalariés]![Salaire]";"[TSalariés]";"[TSalariés]![CodeCategorie]<="
& [TSalariés]![CodeCategorie]);0)
il faudra également s'assurer dans d'autres calculs que la valeur de
[Salaire] n'est pas une valeur Null par Nz.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"C15" 4263ed9e$0$15279$
Merci de cette réponse claire et complète, mais avec toi en aurait-on douter
;-)).
2 précisions :
1 ce cumul s'effectue dans une requête opération où j'ai un
regroupement catégorie par catégorie.
2 si je n'utilise pas la fonction CDbl, je ne peux mettre en forme
mon résultat avec un format numérique (du style fixe ou # ##0,00).
A+
C15
"Raymond [mvp]" de news:
dès l'instant où tu mets un critère la somme tient compte du critère et dans
ton cas c'est le total par catégorie en dehors de tout regroupement.
pour le 2 ça veut dire par exemple que tu n'as que des intégers et ça ne
suffit pas pour obtenir le résultat escompté.
il faudrait avoir tout l'environnement de ton calcul mais laisse le cdbl, ça
ne mange pas de pain.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"C15" 4265e21e$0$15287$
Merci de cet utile complément
A+
C15
"Raymond [mvp]" news: