Doc,
Je préfère de beaucoup l'explication à .....et si cette explication m'a
déjà été donnée, j'en ai pas souvenance mais je m'en excuse auprès des
auteurs.
Peut-être dire ma démarche: pour ce cours à l'association j'entends
montrer comment construire une base simple : une gestion de
bibliothèque. J'ai fait un tutoriel décrivant cette création de bout en
bout, m'appuyant donc sur la même base que le session précédente.
Pour ce qui est de ce calcul de prix dans un 1er temps j'ai indiqué
comment faire la somme des prix sans tenir compte du GENRE (roman,
fiction,etc.) puis en introduisant un critère "en dur" comme ROMAN pour
faire la somme des prix des livres du GENRE : Roman, et enfin montrer
que ce paramètre GENRE peut-être fourni à l'invocation de la Requête
grâce à la boite de dialogue générée par le LIKE :Recherche.
Ce que j'obtiens (en décochant la case visible ... ;-) ) .
De fait comme dit Bernard (Ribotb) c'est plus cohérent de faire un GROUP
BY GENRE.
Merci à vous
A+
Claude
Le 09/06/2010 19:50, Docgranville a écrit :
Le 09/06/2010 19:21, Claude FRICARD a écrit :
Doc,
Je perçois dans ta réponse un peu de sarcasme...Il reste que agrégat
ou pas je ne comprends pas pourquoi une case de visibilité ferait la
différence. ... ;-)
Il est vrai que le code SQL n'est pas tout à fait le même suivant la
visibilité ou pas :
* SELECT SUM( "Prix" ) AS "Total GENRE", "GENRE" FROM "OUVRAGES"
AS "OUVRAGES" WHERE "GENRE" LIKE :Recherche
* SELECT SUM( "Prix" ) AS "Total GENRE" FROM "OUVRAGES" AS
"OUVRAGES" WHERE "GENRE" LIKE :Recherche
Pour que je ne revienne pas l'année prochaine avec ma question....
peut-être m'expliquer le pourquoi des choses, quitte à me dire que si
ça fonctionne avec Access c'est une anomalie...
Salutations mon cher Doc
Claude
Claude,
Il y avait effectivement du sarcasme (léger) dans mon propos ; la
raison en est que "le pourquoi des choses" comme tu dis t'a déjà été
expliqué l'année dernière mais que tu n'as pas voulu l'entendre.
Depuis l'année dernière, tu fais une fixette sur cette fameuse case de
visibilité alors que ce n'est pas le noeud du problème.
Je t'avais écrit l'année dernière : "ce qui me semble important (mais
là, c'est moi qui extrapole puisque je ne sais pas exactement ce que
tu comptais faire), ce n'est pas de constater qu'il suffisait de
décocher la case visibilité pour que la requête fonctionne, mais
plutôt le fait de savoir qu'il fallait mettre une clause de groupement
dans la deuxième colonne, pour parvenir à faire fonctionner la requête
telle qu'elle se présentait"
En fait, en décochant la case de visibilité, ta requêtes ne porte plus
sur le champ "GENRE" et il n'y a plus qu'une seul champ qui est
présenté, avec une condition d'agrégation (le SUM).
De ce fait, tu supprimes la cause de l'erreur, qui était que ta
requête portait sur plusieurs champs, dont certains étaient dans des
calculs d'agrégation et d'autres étaient hors des calculs d'agrégation
(ces derniers devant alors obligatoirement être cités derrière la
clause Group by) ; donc, pour toi cocher ou décocher cette fameuse
case rend valable ou non ta requête ; sauf que, précisément, dans les
deux versions de la requête que tu exposes ci-dessus, la grande
différence, c'est que la première (qui ne fonctionne pas) porte sur
deux champs (et elle ne fonctionne pas à cause du second), alors que
la seconde ne porte plus que sur un champ, la clause de visibilité
ayant eu pour effet collatéral de supprimer ton second champ.
Après, la raison pour laquelle Access (que je ne connais pas)
fonctionne différemment, je ne sais pas.
A+