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

Pb dépassement capacité sur ajout d'un critère dans une requête

3 réponses
Avatar
JMF
Bonjour,

J'ai une requ=EAte qui fonctionne bien qui fait un "Inner join" de 4
tables et int=E8gre des champs calcul=E9s. L'ex=E9cution de la requ=EAte se
fait parfaitement.

Mais, d=E8s que j'ajoute un crit=E8re sur un champ calcul=E9 (par exemple
">3") en mode cr=E9ation de la requ=EAte, l'ex=E9cution =E9choue (selon les
cas ?!?!) :
- soit sur d=E9passement de capacit=E9,
- soit sur division par z=E9ro.

Le fait que la requ=EAte s'ex=E9cute parfaitement sans cri=E8re, et plante
sur ajout d'un crit=E8re simple me laisse totalement perplexe.

Auriez-vous une piste ?

D'avance merci !

JMF

3 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Tu mets dans la ligne critère : ">3" ???
Si tu cherches ce qui est supérieurs à 3, c'est que tu cherches
dans une donnée numérique donc normalement, il faudrait
que tu mettes juste : >3

Par contre si c'est Access qui rajoute automatiquement les ""
c'est qu'il considère que ton champ calculcé est de type texte,
dans ce cas là, il faut que tu le convertisses en numériques.

Exemple, si ton champ est :
Total:(([x]+[y])*12)/8
remplaces en encadrant ton calcul par cDbl() :
Total:cDbl((([x]+[y])*12)/8)

Une fois que tu auras fait ça, normalement Access n'ajoutera pas
les guillements à ton critère : >3.

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"JMF" a écrit dans le message news:

Bonjour,

J'ai une requête qui fonctionne bien qui fait un "Inner join" de 4
tables et intègre des champs calculés. L'exécution de la requête se
fait parfaitement.

Mais, dès que j'ajoute un critère sur un champ calculé (par exemple
">3") en mode création de la requête, l'exécution échoue (selon les
cas ?!?!) :
- soit sur dépassement de capacité,
- soit sur division par zéro.

Le fait que la requête s'exécute parfaitement sans crière, et plante
sur ajout d'un critère simple me laisse totalement perplexe.

Auriez-vous une piste ?

D'avance merci !

JMF
Avatar
JMF
Bonjour,

Execusez-moi : les guillements autour de >3 étaient une mauvaise
convention typographique pour désigner la partie qui était dans la
requête. C'est bien >3 qui est inséré dans le champ critère de la
requête.

Ma question reste entière....

merci !
Avatar
JMF
Je viens de progresser dans l'analyse de mon problème et de mieux
cerner la chose. Le "problème" est reproductible sur le principe
suivant.

Une première table contient les champs X et Y. Pour certains
enregistrements, Y=0

Une première requête écarte les champs pour lesquels Y=0 (critère
Y<>0).

Une deuxième requête présente X, Y et un champ calculé X/Y.

On exécute la requête : tout marche bien : les valeurs sont
calculées (sauf les lignes écartées par la première requête bien
sûr).

On ajoute un critère dans la deuxième requête sur le champ calculé
: X/Y >1.

Et là erreur "Division par zéro", ce qui n'est pas normal car les
lignes avec Y=0 ont été écartées par la première requête !!!! !!!!

Et si on supprime les lignes avec Y=0 de la table... Ca marche bien
sûr.

POURQUOI ! pourquoi la deuxième requête calcule parfaitement sur la
base de la première en l'absence de critère, et pourquoi ça plante
dès que l'on ajoute un critère ?!?!?

merci de vos éclaircissements !