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+

Répondre à