#Erreur sur requête jointure

Le
Jérôme
Bonjour,
Je bloque depuis plusieurs jours sur un cas particulier voir un "bug"
d'access :
Sur une requte assez complexe (il faut le dire) : union, jointure,
regroupement, etc que nous apelerons "A"
j'ai l'affichage du rsultat des colonnes marqus comme "#Erreur" !!=

Aprs une recherche rapide, je remarque que ces colonnes sont le
rsultat d'une jointure "LEFT" entre plusieurs requtes et qu'elles
devraient tre affiche comme "NULL" (ou mme comme "0" puisque j'y ai=

mis la fonction :
"Nz(Monchamps,0)".
Or ce n'est pas le cas : le Nz ne fonctionne pas !
J'ai donc recherch plus loin et je me suis aperu que dans la requete
apele que nous apelerons "B", mon champs est format avec la fonction
"FormatNumber" et Converti avec la fonction "Cdbl" soit :
"Cdbl(FonctionNumber(MonChampsApel,2))" ==> ce qui me donne le
rsultat attendu dans cette requte B.
Le fait d'oter ces deux fonctions (ou l'une ou l'autre : j'ai tout
test) fait que les colonnes de ma requte principale A sont bien
affiches avec la valeur 0 de mon Nz.
Evidemment j'ai besoin de convertir le champs de ma requte B sur 2
chiffres aprs la virgule sinon je me retrouve avec des valeurs
ingrables (0,000000000025, E24,55 ..etc) alors que faire ?!

Quelqu'un a t'il dj eu ce probleme ?
Merci de vos rponses
JDE
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6820071
Salut,

"Jérôme"
Sur une requête assez complexe (il faut le dire) : union, jointure,
regroupement, etc que nous apelerons "A"
j'ai à l'affichage du résultat des colonnes marqués comme "#Erreur" !!
Après une recherche rapide, je remarque que ces colonnes sont le
résultat d'une jointure "LEFT" entre plusieurs requêtes et qu'elles
devraient être affichée comme "NULL" (ou même comme "0" puisque j'y ai
mis la fonction :
"Nz(Monchamps,0)".
Or ce n'est pas le cas : le Nz ne fonctionne pas !
J'ai donc recherché plus loin et je me suis aperçu que dans la requete
apelée que nous apelerons "B", mon champs est formaté avec la fonction
"FormatNumber" et Converti avec la fonction "Cdbl" soit :
"Cdbl(FonctionNumber(MonChampsApelé,2))" ==> ce qui me donne le
résultat attendu dans cette requête B.
Le fait d'oter ces deux fonctions (ou l'une ou l'autre : j'ai tout
testé) fait que les colonnes de ma requête principale A sont bien
affichées avec la valeur 0 de mon Nz.
Evidemment j'ai besoin de convertir le champs de ma requête B sur 2
chiffres après la virgule sinon je me retrouve avec des valeurs
ingérables (0,000000000025..., E24,55 ..etc) alors que faire ?!
-----------

On ne sait ce que font FormatNumber() // FonctionNumber()
ni le reste, d'ailleurs...

Quelques rappels:
Il y a intérêt de fixer les valeurs dès le départ, éventuellement en
utilisant Nz() et de n'utiliser le FORMATage qu'en dernier lieu.
Format() rend une chaîne de caracères, pas un nombre.
Les nombres ayant besoin de garder leur précision sont mieux gérés
au format monétaire.
Une sous-requête apporte parfois la solution.
Le Nz() ne converti que les NULL, pas les chaînes vides...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Publicité
Poster une réponse
Anonyme