#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 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 ?!

Quelqu'un a t'il déjà eu ce probleme ?
Merci de vos réponses
JDE
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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