OVH Cloud OVH Cloud

Cumul dans une requête

4 réponses
Avatar
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

4 réponses

Avatar
Raymond [mvp]
Bonjour.

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" <Mé a écrit dans le message de news:
4263ed9e$0$15279$
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




Avatar
C15
Bonjour Raymond,

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]" a écrit dans le message
de news:
Bonjour.

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" <Mé a écrit dans le message de
news: 4263ed9e$0$15279$
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








Avatar
Raymond [mvp]
Bonjour.

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" <Mé a écrit dans le message de news:
4265e21e$0$15287$
Bonjour Raymond,

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]" a écrit dans le message
de news:
Bonjour.

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" <Mé a écrit dans le message de
news: 4263ed9e$0$15279$
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












Avatar
C15
Bonsoir Raymond,

Merci de cet utile complément

A+

C15


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

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" <Mé a écrit dans le message de
news: 4265e21e$0$15287$
Bonjour Raymond,

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]" a écrit dans le message
de news:
Bonjour.

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" <Mé a écrit dans le message de
news: 4263ed9e$0$15279$
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