Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction de domaine paramétrable ?

4 réponses
Avatar
Bernard356
Voici mon probl=E8me.




Dans une requ=EAte_1, j'utilise deux champs calcul=E9s.




La valeur du second champ calcul=E9 doit provenir d'une=20
requ=EAte_2


J'utilise donc une "fonction de domaine" : SomDom()


Le troisi=E8me argument de cette fonction permet d'introduire=20
une condition.




Tout va tr=E8s bien, si le second terme de la condition est=20
une valeur fixe.




Mon probl=E8me survient lorsque je souhaite remplacer cette=20
valeur fixe par une variable qui doit provenir du premier=20
champ calcul=E9.






Pour illustrer la chose :




La requ=EAte_1 me permet de d=E9terminer les membres actuels=20
d'une association


Chaque membre a deux dates : celle de son entr=E9e et celle=20
de sa sortie.


Les membres actuels sont ceux dont "date de sortie" IS NULL




Le premier champ calcul=E9 me permet de conna=EEtre l'ann=E9e=20
d'entr=E9e du membre actuel.


annee_deb: Ann=E9e([date_deb])


Les valeurs de ce champ varie en fonction du membre.










La requ=EAte_2 me permet de lister les montants des=20
cotisations par ann=E9e.


(les montants des cotisations varient d'ann=E9e en ann=E9e)




Le second champ calcul=E9 (de la requ=EAte_1) devrait me=20
permettre de connaitre la somme des cotisations dues (le=20
montant d=FB)




montant_du:=20
SomDom("[montant_coti]";"rqt_coti_effectifs";"[annee_coti]>
=3D2000")




Les valeurs de ce champ sont identiques ...


Or, tous les membres ne sont entr=E9s dans l'association en=20
2000 ...


Je souhaite donc remplacer 2000 par la valeur du premier=20
champ calcul=E9 ("annee_deb"). C'est ici que se trouve mon=20
probl=E8me.






Pour d=E9terminer si un membre est en r=E8gle de cotisation, il=20
faut pour chaque membre calculer la somme des cotisations=20
dues (somme qui varie d'un membre =E0 l'autre) puis la somme=20
des montants qu'il a vers=E9; puis comparer ces deux sommes.




Je cherche =E0 d=E9terminer les membres en r=E8gle et, dans un=20
premier temps, le montant du.






Ma question "technique" est le second terme d'une condition=20
dans le troisi=E8me param=E8tre d'une fonction de domaine=20
peut-il =EAtre une variable (la valeur d'un champ calcul=E9) ?




D'avance merci pour votre r=E9ponse




Bernard

4 réponses

Avatar
3stone
Salut,

"Bernard356"

Dans une requête_1, j'utilise deux champs calculés.
<snip>


Au lieu de ce long plaidoyer, il aurait été plus simple de nommer

- La ou les tables concernées
- Les champs qui interviennent dans les calculs des cotisations



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Bernard356
Voici les rêquetes en SQL :




La requête_1 (appelée "rqt_1") fait appel une seule table
(appelée "groupes")




SELECT groupes.id_member, groupes.date_deb,
Year([date_deb]) AS annee_deb,
DSum("[montant_coti]","rqt_2","[annee_coti]> 00") AS
montant_du


FROM groupes


WHERE (((groupes.date_fin) Is Null) AND
((groupes.groupe)="effectif"));








La requête_2 (appelée "rqt_2") fait appel à une seule table
(appelée "cotisations")




SELECT cotisations.annee_coti, cotisations.montant_coti,
cotisations.groupe


FROM cotisations


WHERE (((cotisations.groupe)="Membre effectif"));




Ce que j'aimerais savoir c'est : Est-il possible de
remplacer 2000 dans la requête_1 par la valeur du champ "
Year([date_deb]) AS annee_deb "(de cette même requête_1) ?
Avatar
bernard356
Oui, les fonctions de domaines sont "paramètrables" !


Encore faut-il les écrire avec la bonne syntaxe ...




Solution :




SELECT groupes.id_member, groupes.date_deb,
Year([date_deb]) AS annee_deb,
DSum("[montant_coti]","rqt_2","[annee_coti]>=" &
[annee_deb]) AS montant_du


FROM groupes


WHERE (((groupes.date_fin) Is Null) AND
((groupes.groupe)="effectif"));




NB : Mon erreur était de vouloir tout mettre entre les
guillemets


Le troisième paramètre s'écrit ; "......." & ....


Il faut donc placer un "et commercial" puis la valeur,
l'alias du champ, ...




J'ai trouvé la solution en surfant sur
http://users.skynet.be/mpfa/
Avatar
3stone
"bernard356"

J'ai trouvé la solution en surfant sur
http://users.skynet.be/mpfa/



C'est le meilleur point de départ pour chercher quelque chose...

;-))


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------