|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
J'ai effectué une petite recherche dans ce forum pour trouver que le format date admissible dépendait du format date positionné sur le serveur.
Je n'ai pas encore vérifé ce format sur le serveur (en W2K pro), mais j'ai cependant une "curiosité" à évoquer: Une table comporte une colonne en DATE. L'appli peut y stocker une date via un DateTimePicker dont la valeur par défaut est 31/12/2100. Lors de l'insert, une exception de conversion monte disant que cette date n'est pas valide ???? => y a t'il une limite (date max) pour Interbase ? D'autre part, en mode fiche sous IBExpert, je peux modifier cette date coté serveur. Une sorte de DatePicker le permet (pas d'erreur de manip possible donc). Mais, quand je positionne la date au 8 fév 2005, l'affichage devient Citation:
et, quand j'appelle cette ligne dans l'appli, c'est pourtant 08/02/2005 qui s'affiche.... Bref, j'y perd mon peu de latin et je me demande si le 31/12/2100 n'est pas interprété comme un format MM/JJ/AAAA pour lequel le mois 31 n'existe bien sûr pas.....
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Ahhh les dates vaste sujet de problèmes et confusions.
Pour commencer les dates sous IB sont enregistrer physiquement dans un double precision(partie entière le nombre de jour depuis une date de référence (constante) et la partie decimale (utilisé pour les timestamp) correspond aux nombre de millisecondes dans cette journée. Donc autant dire qu'il se fout complètement de nos problèmes de représentation des dates. Autre chose à savoir IB/FB serveur se foutent également du paramétrage régionnale windows du serveur. Et ceci afin d'éviter d'avoir un comportement différent entre une installation WIN et autre. Donc comment bien gérer les dates : Sous Delphi/BC++ si on utilise les composant DB il n'y a pas de problemes. Si on doit utiliser une date provenant d'une variable, utiliser toujours l'affectation à travers un field.AsDate := MaDate; ou requete paramétrée IBQ.ParamByName('MA_DATE').ASDate := Date; ne pas utiliser si possible une chaine. Sinon si on laisse IB convertir la chaine voiçi ce qu'il faut faire : Toujours utiliser le format 'AAAA/MM/JJ' ou 'AAAA-MM-JJ' qui a le mérite de ne pas préter à confusion. Car hélas IB ne reconnait pas le format Français, par contre il reconnait le format américain 'MM-JJ-AAAA', donc si on lui passe une chaine de type 'ZZ-EE-RRRR' il va forcément penser que c'est le format américain et donc ZZ pour le mois, EE pour les jours et RRRR pour l'année. Les composants Delphi/BC++ sont sensible au paramétrage régional de windows, donc il faut faire attention à ça. Il est possible de définir rien que pour votre appli ce paramétrage si vous compter faire une appli ayant la même interface quelque soit la langue. Pour IBExpert vous n'avez pas du le franciser et donc l'affichage des dates se fait à la mode anglaise. |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Bon, après quelques vérif, j'ai opté pour 1 fonction qui met la date au format AAAA.MM.JJ ... Elle est donc prête pour le stockage dans IB.
Merci encore.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com