Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 31/03/2008, 11h29   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 44
Points : 13
Points : 13
Par défaut Erreur en fonction de la langue de l'environnement.

Bonjour,

voilà, je fais la maintenance d'une base access qui va être déployer dans différents pays et je rencontre un problème concernant l'environnement du point de vue de la langue.

En premier exemple, on importe un fichier excel avec les données sous ce format: "23-may-2008"
Pour le stocker dans la base, je réalise un CDate() dessus.
Si je suis en environnement FR, j'ai une erreur sur la fonction.
Si je suis en environnement anglais, ça passe très bien.

Vice et Versa si le mois est "écrit" en français ("23-mai-2008"), erreur dans un environnement anglais.

Second exemple, il y a des formulaires avec des listbox ("Oui";"Non") sur des booléens.
En environnement FR, pas de problèmes, en environnement anglais, problèmes.
Vice et versa si je mets ("Yes";"No").

Est-ce que quelqu'un aurait déjà expérimenté ça et n'existe-t-il pas un "code" universel pour ces variables écrites?
Serait-il pertinent de développer 2 apply (une pour la france, et une pour le reste?)

Merci d'avance.
oldergod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 21h49   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 487
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 487
Points : 7 583
Points : 7 583
Ha les joies du multilinguisme :-).

Je ne pense pas que 2 appli soient une bonne soltions. Une internationalistion me parait préférable.

Pour les liste j'utiliserai la table suivante :

Table Valeurs :
Code interne
Code source
Code élément

Table Traduction
Code élément
Code source
Code langue
Texte dans la langue voulue.

ex pour les oui non

table valeurs
True, Boolean, ChoixOui

Table traduction
ChoixOui, Boolean, Fr, Oui
ChoixOui, Boolean, Us, Yes

À chaque fois que tu offrira un choix, il faudra utiliser une requête qui affichera le bon libellé mais la valeur retenue la même quelque soit la langue.

Pour les importations, comme tu travailles avec des chaînes je pense qu'il va falloir écrire ta propre fonction de traduction.

Un truc qui va tester une partie de ta chaîne pour déterminer la langue source.

du genre

Code :
1
2
3
4
5
6
 
if mid(prmMaChaine,4,3)="mai" then
   'Traitement spécifique au français
else
   'traitement spécifique pour une autre langue
end if
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 10h59   #3
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 887
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 887
Points : 10 742
Points : 10 742
Envoyer un message via MSN à jpcheck
salut,
j'oserai ajouter que si tu as la possibilité de passer en date MM/DD/YYYY ca serait beaucoup plus simple aussi .
+1 pour la table de traduction
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 14h54   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 44
Points : 13
Points : 13
Merci pour vos réponses. En effet les tables de traduc me paraissent être une bonne solution.

Mon principal problème est que je ne peux pas savoir dans quel langue je suis. (à moins de réaliser par exemple, un "try" sur un CDate("20/12/2008"), si ça marche, je suis en us, sinon en fr?)

Et c'est parce que je ne sais quel langue domine l'environnement que je ne vois pas vraiment comment affecter telle variable et que donc, je cherchais à trouver un code universel pour des variables assez simple (je fus très étonné de voir que yes n'était pas reconnu...)

C'est pour ça que
Citation:
j'oserai ajouter que si tu as la possibilité de passer en date MM/DD/YYYY ca serait beaucoup plus simple aussi
ne me parait pas réalisable car Access s'attendra à des dd/mm ou mm/dd en fonction de la langue, je pense non?
le programme l'importe d'un excel, c'est pour le moment un string. je le passe en date en faisant un CDate dessus pour l'instant.
Je viens d'y penser, et s'il est possible de modifier le mois d'une date avec Month(date) = X par exemple, alors je pourrais créer une date, lui affecter chaque champ (jour, mois, année) sans me soucier de l'ordre lié à la langue.

Je continue de réfléchir. Merci encore.
oldergod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 19h08   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 487
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 487
Points : 7 583
Points : 7 583
À propos des formats de date, le format inversé (YYYY/MM/DD) à l'avantage d'être beaucoup moins ambigu et donc d'être facilement lu quelques soit la langue.

Je suis au Québec, dans un environement bilingue, et je n'utilise plus que ce format la et je n'ai plus de maux de tête avec mes dates.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 22h22   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Citation:
Envoyé par oldergod Voir le message
on importe un fichier excel avec les données sous ce format: "23-may-2008"
Pour le stocker dans la base, je réalise un CDate() dessus.
Le problème est qu'à la base la date n'est pas reconnue comme telle dans Excel.
Sinon, quel que soit le format (date) d'affichage dans Excel, la colonne sera importée avec le type Date/Time dans Access.

Si tu as la possibilité d'agir à la source sur le fichier Excel ça devrait résoudre le problème des dates.
Tu n'as pas de problèmes avec les nombres décimaux (séparateur décimal et milliers) ?

Pour connaître l'identificateur des paramètres régionnaux tu peux essayer cette fonction de l'API windows.
(A mettre dans la partie déclarations d'un module de code)
Code :
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Les 16 premiers bits représentent la langue + le pays.
Code :
GetUserDefaultLCID() AND &HFFFF
Les 10 premiers bits représentent la langue seule.
Code :
GetUserDefaultLCID() AND &H3FF
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Identifier(hexa)   Language                     Identifier (décimal)      Langue seule(décimal)
  0x0409           English (United States)         1033	                      9
  0x0809           English (United Kingdom)        2057                       9
  0x0c09           English (Australian)            3081                       9
  0x1009           English (Canadian)              4105                       9
  0x1409           English (New Zealand)           5129                       9
  0x1809           English (Ireland)               6153                       9
  0x1c09           English (South Africa)          7177                       9
  0x2009           English (Jamaica)               8201                       9
  0x2409           English (Caribbean)             9225                       9
  0x2809           English (Belize)               10249                       9
  0x2c09           English (Trinidad)             11273	                      9
  0x040c           French (Standard)               1036                      12
  0x080c           French (Belgian)                2060                      12
  0x0c0c           French (Canadian)               3084	                     12
  0x100c           French (Switzerland)            4108                      12
  0x140c           French (Luxembourg)             5132                      12
  0x180c             Windows 98/Me,                6156                      12
                   Windows 2000/XP:
                    French (Monaco)
Donc GetUserDefaultLCID() AND &H3FF retourne 9 pour de l'anglais et 12 pour du français.


Autrement sans API,
Code :
Format(#5/1/2008#, "mmm")
te renverra "mai" ou "may" en fonction des paramètres régionnaux du PC.

A+
LedZeppII est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2008, 09h43   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 44
Points : 13
Points : 13
Citation:
Envoyé par LedZeppII Voir le message
Tu n'as pas de problèmes avec les nombres décimaux (séparateur décimal et milliers) ?
j'en ai eu quand des requêtes se définissaient dans le code directement mais peu, je dois l'avouer.

Merci beaucoup pour la remarque sur les dates et pour la fonction API windows, je devrai m'en sortir avec ça
oldergod 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 18h47.


 
 
 
 
Partenaires

Hébergement Web