Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2007, 11h48   #1
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
Par défaut Lien Oracle Access via ODBC

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.
arkhan69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 12h14   #2
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Bonjour,
Le problème doit être le même qu'ici :
http://www.developpez.net/forums/sho...d.php?t=164708
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 14h17   #3
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
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??
arkhan69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 14h37   #4
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
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.
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 15h12   #5
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
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?
arkhan69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 15h21   #6
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Citation:
Envoyé par arkhan69
Juste un petit truc : mon driver ODBC fourni par Oracle se nomme "Oracle in OraHome92". Ca vous dit qque chose?
C'est juste le nom du driver, la version est accessible via l'onglet "driver" de odbcad32, mais de toutes manières cela ne me causera pas
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 15h29   #7
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
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...
arkhan69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 15h19   #8
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 6
Points : 1
Points : 1
Citation:
Il faut ajouter, si elle n'existe pas, la clé de registre suivante :

Emplacement : "SOFTWARE/ORACLE"
Nom : "NLS_NUMERIC_CHARACTERS"
Valeur : ".,"

Cordialement.
Bonjour à tous,

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.
arkhan69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2007, 20h15   #9
Invité de passage
 
Inscription : octobre 2007
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 2
Points : 2
Points : 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.
lecorr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h33.


 
 
 
 
Partenaires

Hébergement Web