Bonjour,
Je vous soumets un sujet très décontenançant qui mêle connexion aux bases de données et formulaires.
J'ai une base Access administrée sous Access 2016 64 bits (mais initiée sous une version antérieure....2013 32 bits de mémoire) avec des tables liées à une BD Oracle à l'aide d'un DSN ODBC Oracle 64 bits (même phénomène sur un autre poste client en 32 bits).
Dans le paramétrage du DSN, j'ai bien indiqué la valeur "Use US settings" au paramètre "Numeric Settings" afin que les valeurs numériques décimales affichent bien la virgule sur le SGBD client.
Pour la faire simple, la base est constituée :
- de tables liées à la BD Oracle grâce au DSN ODBC Oracle
- un formulaire d'accueil avec des boutons appelant d'autres formulaires et un champ de paramètre de choix de date (utilisé dans la requête exécutée derrière le formulaire appelé par un bouton)
- un formulaire appelé
- ce formulaire appelé contient des sous-formulaires
- l'un de ces sous-formulaire affiche le résultat d'une requête qui se base sur des champs numériques avec décimales
C'est là que cela devient cocasse. Selon l'élément que j'appelle en 1er, la décimale est prise en compte ou non (un 15,7 devient 157 si KO) pour la suite de la session Access. J'ai réussi à isoler le seul scénario qui me conduit à la non-prise en compte de la décimale.
Scénarios qui ne posent pas problème (entre chaque scénario, je ferme la base puis la rouvre pour me remettre en condition de test identiques) :
- Ouverture de la table liée ==> Décimal OK
- Ouverture de la requête du sous-formulaire du formulaire appelé par le bouton du formulaire d'accueil (sic!) ==> Décimal OK
- Ouverture du sous-formulaire qui exécute la requête du scénario précédent (sans passer par le formulaire parent) ==> Décimal OK
Scénario qui pose problème :
- Ouverture du formulaire contenant le sous-formulaire exécutant la requête directement depuis le menu de navigation et non depuis le bouton du formulaire d'accueil ==> Décimal KO, 15,7 vaut 157 dans la somme que fait la requête
Et donc comme je le disais précédemment, si je commence par dérouler un scénario qui fonctionne et qu'ensuite j'exécute le scénario qui ne fonctionne pas sans fermer Access entre les 2, le scénario, qui normalement ne fonctionne pas, fonctionne ! Et vis versa (si j'exécute d'abord le scénario qui ne fonctionne pas, les scénarios qui fonctionnent normalement auront le même problème de décimal tant que je reste dans la même session Access.
Le problème semble donc se situer sur le formulaire contenant le sous-formulaire qui exécute la requête avec des décimales mais je ne comprends pas ce qui, dans un formulaire Access, peut influer sur la prise en compte ou non d'une décimale au sein d'une même session....
3 questions :
- Suis-je fou ?
- Avez-vous une idée de ce qui peut me conduire à cette situation ?
- Si non, comment faire en sorte qu'au démarrage de la base, Access "simule" en premier l'un des scénarios qui fonctionne en mode silencieux (sans affichage à l'écran), par exemple l'ouverture d'une table liée contenant des décimales afin que le reste de ma session se passe correctement ?
Un grand merci par avance pour votre aide !
Partager