FORMAT DE DATE SYSTEM ET PORTABILITÉ

Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- - Dernière réponse : pillsmen
Messages postés
27
Date d'inscription
samedi 27 mai 2006
Statut
Membre
Dernière intervention
3 juillet 2007
- 3 juil. 2007 à 13:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43286-format-de-date-system-et-portabilite

Afficher la suite 
cs_DARKSIDIOUS
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73 -
Y'a un truc qui me choque :
"INSERT INTO test (date_test) VALUES ('" & CDate(date_test.Value) & "');"

Les dates en SQL access doivent être entourées de dièses et être au format américain... à moins que tu ne l'enregistre dans un champ de type texte, mais là c'est pas très optimisé !

DarK Sidious
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54 -
aïe...

tu as fait tout ce qu'il ne faut pas faire, au contraire.
c'est un sujet qui m'est cher, et ton code ne va pas.


les manipulations de dates en SQL se font comme cela :
"INSERT INTO test (date_test) VALUES (#" & Format$(date_test.Value,"MM\/DD\/YYYY") & "#);"

on s'affranchit au plus tôt des parametres regionnaux.


comme nous y invite ton interface, j'ai saisi 02/09/2007
(deux septembre 2007)

mais ton code :
"INSERT INTO test (date_test) VALUES ('" & CDate(date_test.Value) & "');"
execute
... VALUE('02/09/2007')

qui sera interpreté par Access, via les parametres regionnaux...
bonjour le 9 février ^^

on ne force jamais un format de saisie à l'utilisateur, le programme doit s'adapter aux parametres regionnaux.


pour ta recherche, idem...



request = "SELECT Count(1) AS Nb " & _
"FROM test " & _
"WHERE test.date_test=#" & Format$(date_recherche.Value,"MM\/DD\/YYYY") & "#;"


et c'est TOUT....

Access reconnaitra une date, passée en format internationnal, parfaitement compris, quelles que soient les parametres regionnaux
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54 -
en gros, ta seule grosse erreur a été de placer ton label qui invite a saisir les dates en format dd/mm/yyyy. (vu que CDate, que tu as utilisé utilises les parametres regionnaux)


ce qu'indique DarkSidious est vrai, tu fait faire trop de transtypages, qui risque de ralentir la chose... présentement, Access va s'y retrouver, mais bon.
pillsmen
Messages postés
27
Date d'inscription
samedi 27 mai 2006
Statut
Membre
Dernière intervention
3 juillet 2007
-
Merci pour vos conseils,

je modifie la source de suite :).

Par contre Renfield, je crois que tu n'as pas saisi le principe de mon label :).
A l'ouverture du formulaire, la fonction ReturnFormat() permet de construire la chaîne de caractère (masque de saisie) qui indiquera à l'utilisateur sous quel format entrer la date par analyse de la date renvoyée par la fonction Date(). Celui-ci est donc basé sur les paramètres régionnaux (j'ai testé avec tout les formats de dates que j'avais dans Panneau de configuration > Options régionnales et linguistiques). Je n'ai trouver aucune source qui le fasse, c'était donc l'intérêt de celle-ci ;).

En revanche, dans mon programme je devrais gérer l'insertion/lecture de dates quelque soit la région donc si j'ai bien compris en changeant mes requêtes mon code sera portable quelque soit les paramètres régionnaux du système?

Quelle misère cette gestion des dates sous Access ... ;)
pillsmen
Messages postés
27
Date d'inscription
samedi 27 mai 2006
Statut
Membre
Dernière intervention
3 juillet 2007
-
Petite remarque, juste pour essayer de comprendre un peu plus :)

Admettons d'avoir les paramètres régionnaux pour le format date courte : yyyy.mm.dd. (format hongrois, me demander pas pourquoi, c'est le premier format "bizarre" que j'ai trouvé ^^). Si je saisie une date dans un format complètement différent il me sauvegarde n'importe quoi dans la BDD ?!

J'ai tester en entrant un format jj/mm/yyyy (pour exemple : 09/02/2007, en gardant le format system hongrois), quand je consulte la base de donnée, il me met 2007.09.02 !
Autrement dit, si l'utilisateur saisie une date dans un format autre que le format système, si ce format est "proche" du format système, pas de problème (style dd/mm/yyyy et dd.mm.yyyy) mais dans le cas contraire ..... ce qui implique qu'il faudrait une vérification sur le format à l'insertion histoire d'être sûr ?!