Somme conditionnelle sur un sous formulaire

Fermé
bakool Messages postés 2 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 2 février 2015 - 30 janv. 2015 à 02:18
 Tessel75 - 4 févr. 2015 à 12:17
Bonjour a tous et merci d'avance pour votre aide.

J'ai un problème avec un somme conditionnelle qui s'applique a un de mes sous formulaire (B) avec une condition sur les dates. J'ai un formulaire qui s'appelle A et qui conditionne le sous formulaire B grâce a une liste déroulante.
Le sous formulaire B vient d'une requête et comporte la liste des produits de mon fournisseur sélectionné dans la liste déroulante. On retrouve dans le sous formulaire B le volume de ces produits et la date d'expédition.
J'aimerais faire la somme des volumes de mon sous formulaire B mais seulement pour les produits entre deux dates données.
J'ai donc utilisé Dsum([volume],"B","cond")
Le problème c'est que le résultat est faux. Ce que Access fait c'est volume du premier enregistrement de B * nombre d'enregistrements de B !! Tres étrange.

Merci pour votre aide, j'ai pas mal cherché, je ne comprends pas. A mon avis ça doit venir du domaine qui est pas bon ...
A voir également:

7 réponses

Bonjour,
"Ce que Access fait c'est volume du premier enregistrement de B * nombre d'enregistrements de B !!"
Met nous la copie de la requête de ton sous-formulaire en SQL, qu'on y voit un peu clair.
Sinon pour la délimitation entre 2 dates, il suffit d'introduire la condition "Entre dateDebut et DateFin" dans ta requête.
Au besoin tu peux ajouter à ton formulaire principal 2 contrôles indépendants "dateDebut " et "DateFin" et faire dépendre ta requête de ces 2 valeurs.
Bonne suite
0
bakool Messages postés 2 Date d'inscription vendredi 30 janvier 2015 Statut Membre Dernière intervention 2 février 2015
2 févr. 2015 à 02:07
Merci pour ta réponse, voila ce que j'ai mis :

=DSum([hauteur_nu]*[largeur_nu]*[profondeur_nu]/1000000*([Qté_com]-[Qté_reçu]),"supplier_activity2","now()<=[date_max]<now()+7-Weekday(now(),2)")

Sachant que supplier_activity2 est le nom de mon sous formulaire.

Tessel, le problème ne porte pas vraiment sur la condition de date mais plus sur le domaine je pense.

J'ai mis une capture d'écran de cette requête.

Merci d'avance
0
Bonjour,
L'écriture habituelle de la série des opérations sur domaine est "Dsum("A","Table ou Requête","Conditions")".
Je doute beaucoup, parce que je ne l'ai jamais fait, qu'il soit possible de faire une opération dans le terme Champ de la formule; donc il vaudrait mieux trouver une écriture du genre Dsum() + DSum + etc. Mais alors il est bien plus simple d'écrire ces opérations dans la requêtes elle-même.
Par ailleurs, écrire: "now()<=[date_max]<now()+7-Weekday(now(),2)") est une abération parce que Now() est une constante.
Quoiqu'il en soit, il n'y a pas à s'étonner que ta formule ne marche pas. Enfin tu dois savoir que la série des opérations de domaine sont passablement fragiles et qu'il faut être particulièrement précautionneux dans leur emploi.
0
Bonjour,


L'écriture habituelle de la série des opérations sur domaine est "Dsum("A","Table ou Requête","Conditions")".

Il me semble que cela correspond non ?

Par ailleurs, écrire: "now()<=[date_max]<now()+7-Weekday(now(),2)") est une abération parce que Now() est une constante.

Ma condition ne porte pas sur Now() qui est comme tu le dis une constante mais sur [date_max]. En gros je veux sélectionner seulement les enregistrements qui ont une date_max associée comprise entre aujourd'hui et la fin de la semaine.

Et si il est possible de faire des opérations dans les champs des formules, je le fais souvent et cela fonctionne très bien.

Et que veux tu dire par Dsum + Dsum + etc je n'ai pas bien compris.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
En fait voila, je me rends compte que je n'ai pas été très clair.
Mon sous formulaire a pour enregistrements des produits.
Ce que je veux faire c'est la somme sur le volume (c'est le : [hauteur_nu]*[largeur_nu]*[profondeur_nu]/1000000*([Qté_com]-[Qté_reçu])) des enregistrements (des produits donc) de mon sous formulaire, MAIS UNIQUEMENT pour ceux qui ont une date_max comprise entre aujourd'hui et la fin de la semaine.
Le but est d'avoir dans le formulaire ce volume total.

Merci d'avance.
0
Bonjour,
Tu avais écrit:"DSum([hauteur_nu]*[largeur_nu]*[profondeur_nu]/1000000*([Qté_com]-[Qté_reçu])".
Or autant l'expression est valide en maths (Somme(A*B*C) =S omme(A)*Somme(B)*
Somme(C)
), autant avec Access je doute que ça le soit.
Donc il faut bien mieux calculer toutes les variables partielles et les sommer à la fin avec une requête-opération (utiliser l'icône Sygma et en même temps mettre les critères de sélection sur les dates.
A l'arrivée, c'est très simple et ne nécessite pas les fonctions DSum()
Bonne suite.
0
Excuse moi mais la tu te trompes vraiment :

Or autant l'expression est valide en maths (Somme(A*B*C) =S omme(A)*Somme(B)*
Somme(C))


Cette expression est fausse mon cher, et si tu veux t'en persuader tu n'as qu'a faire un petit calcul dans ta tête.

Merci quand même !
0
Bon OK, j'ai confondu avec la multiplication d'une somme par une constante. Mes dernière études de maths remontent à plus de 40 ans, alors...
Cela dit, le problème est surtout que tu as bien écrit "DSum(A*B*C/d * (E-F))", et ça, ça ne peut pas passer.
Je répète qu'il faut passer par une requête qui est plus stable. A toi de voir.
Bonne suite
0