|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 6 ![]() |
Bonjour à tous,
J'ai déjà posté cette requête dans le forum Access, vu que ça le concerne aussi, mais je pense que ça trouvera plus d'experts dans ce forum. Donc je vous remets le post : Je travaille actuellement sur un ERP qui exploite une base de données Oracle par l'intermédiaire d'Access et de liens ODBC. Comme j'ai passé beaucoup de temps en vain à trouver une réponse à mon problème, je me résous à m'inscrire ici et à poser la question, en espérant y trouver des réponses. Le problème n'est pas très simple en fait : je me suis aperçu que l'ERP ne renvoyait pas les bonnes valeurs de la base de données Oracle dès lors que ces valeurs sont des nombres à virgule. Exemple : la BD Oracle contient un champ avec une valeur de TVA à 19,6 et c'est la valeur '196,00' qui est affichée par l'ERP. Je me suis tout d'abord demandé si ce n'était pas un paramétrage de Oracle qui causait tout ça mais apparemment non : lorsque j'ai affiché le contenu de la table Access liée à une des tables Oracle incriminée, je me suis aperçu qu'elle contenait des valeurs erronées . De plus, l'ERP se borne à afficher un résultat de requête SQL sur la base Access, sans traitement a posteriori, donc le souci ne vient pas du soft (je pense donc que le problème vient de l'ODBC). J'ai effectué aussi plusieurs tests : import des données de la table par le même lien ODBC sous Excel (test concluant, cela renvoit les bonnes données... bizarre), mise à jour des drivers ODBC Oracle (ça ne change rien), changement de drivers ODBC (jusque là j'utilisais les drivers fournis par Oracle, j'ai donc pris ceux de Microsoft : que dalle)... Bref je suis un peu dans le flou là... Donc ma question est : savez-vous s'il y a un quelconque problème ODBC connu entre Access et Oracle et notamment au niveau des nombres à virgule, et surtout si il y a une solution connue. Je précise tout de même aussi qu'à part ce cas précis, les liens ODBC entre les autres tables fonctionnent parfaitement. Voilà, merci de m'avoir lu et merci d'avance pour les potentielles futures réponses. |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : juillet 2006 Messages : 445 ![]() |
Bonjour,
Le problème doit être le même qu'ici : http://www.developpez.net/forums/sho...d.php?t=164708 |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 6 ![]() |
Rhoooooo... Honte à moi je n'avais pas vu le post...
Par contre j'ai fait la modif et ça n'a pas l'air de fonctionner, Access me renvoit toujours les mauvaises valeurs. J'espère avoir tout fait bien comme il faut : - Aller dans Regedit, dans HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE - Créer une nouvelle valeur chaîne NLS_NUMERIC_CHARACTERS - Lui affecter la valeur ., Question : faut-il rebooter ou les modifications sont immédiates?? |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : juillet 2006 Messages : 445 ![]() |
Normalement je ne crois pas, mais ça vaut le coup d'essayer.
J'avais rencontré ce problème et je crois que cette solution est bonne mais a ses limites ... mais ça remonte à loin et je ne me souviens plus lesquelles Les champs incriminés, dans mon cas, étaient essentiellement des montants, j'avais résolu le problème en ramenant des centimes (par exemple en attachant non plus les tables mais des vues avec les montants convertis). Il me semble qu'a terme le problème avait disparu lors du changement de version du pilote odbc. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 6 ![]() |
Ouais, le seul problème avec l'ERP, c'est que il ne vaut mieux pas modifier le code source sinon je suis bon pour de gros futurs soucis (ma boite n'en est pas l'éditeur).
J'ai essayé en changeant de driver ODBC (celui de crosoft), ça fonctionne très bien sur access ou excel mais dès que je lance l'appli, il n'arrive pas à se connecter (pourquoi? mystère et boule de gommes). Bref, je suis au fond du trou là... Juste un petit truc : mon driver ODBC fourni par Oracle se nomme "Oracle in OraHome92". Ca vous dit qque chose? |
|
|
00
|
|
|
#6 | |
|
Membre éprouvé
![]() Inscription : juillet 2006 Messages : 445 ![]() |
Citation:
|
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 6 ![]() |
Oui, je me doutais bien...
De toute façon j'ai la dernière version du driver ODBC pour ma base Oracle 9.2, mais comme j'entendais par ci par là d'autres noms de drivers Oracle, je voulais savoir si il en existait un autre. Meric en tout cas de tes réponses, mais tout ça ne résout pas mon schmilblick... |
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 6 ![]() |
Citation:
Je me permets de remonter ce topic car une solution a été trouvée et je pense que ça pourra servir à un certain nombre d'entre vous. Je me suis inspirée de la solution proposée par Shakram dans Ce Topic : En fait, il faut rajouter la valeur chaîne "NLS_NUMERIC_CHARACTERS" de valeur ".," dans HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0. Ceci a pour effet d'outrepasser les caractères numériques définis par défaut par le NLS_LANG. Attention toutefois : si vous faites cela, toutes les applications installées sur le même serveur d'application et voulant se connecter à une base Oracle prendront les mêmes paramètres. |
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : octobre 2007 Messages : 2 ![]() |
Une autre solution avec moins de problèmes potentiels pour les autres utilisateurs:
mettre en place un trigger 'on-logon' dans Oracle. Détecter le nom de l'application (ici access...) et en cas de succès, faire un execute immediate 'alter session set NLS_NUMERIC_CHARACTERS=''?,'''; cela résoud le problème. Si vous ne savez pas détecter l'application, créer un USER oracle spécifique et mettre un 'on-logon' sur ce user. Cordialement. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com