Salut à tous
voilà mon problème, mes formes ont des champs de dates (pas le fruit, le jour!) Ces champs ont comme pattern DD/MM/YYYY. Ces dates sont actuellement remplies à la main.
Je suis en train de mettre en place l'utilisation d'un petit calendrier, permettant de choisir une date, pour que les utilisateurs aient plus facile.
Tout marche presque bien...
Voila comment je procède. Tout champ date peut etre double-cliqué pour appeler une petite forme calendrier dans laquelle une choisi une date, on clic sur OK de ce calendrier et cela passe a la forme qui fait le call_form, la date en variable globale. La forme recupere la variable global et l'utilise...
Tout irait bien si bizarrement il n'y avait pas de changement de format de date chose que je ne m'explique pas.
Je m'explique: dans le calendrier, la date que je choisi est au format DD/MM/YYYY. J'ai fait un test pour etre sur, et j'affiche un message visionnant la date. J'obtiens bien une date style 14/02/2005
Je la transforme en variable globale, pour cela il faut la transformer en caractere, donc to_char. Je ferme le calendrier.
La forme qui a fait le call_form recoit la variable globale. Là pour etre sur, je fais un message pour visionner la variable. En mode caracteres cela me donne tjs 14/02/2005.
Et LA, quand je fait un to_date, ben la date se transforme en 14-FEV-05, résultat dans ma forme la date devient 14/02/0005, voila qui est plutot embettant.
Ici le code dans le calendrier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 :global.var_date := to_char(date_lov.current_lov_date,'DD/MM/YYYY'); message('La date choisie est le : '||:global.var_date); exit_form;
Ici le code dans le trigger when-double-click
Il y a du code en trop , ce sont tous les petits messages et les variables supplémentaires qui ne servent qu'à mes tests. Mais ce que je ne comprends pas c'est pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DECLARE P_CHAMP1 VARCHAR2(50); date_tmp DATE; BEGIN P_CHAMP1 := :SYSTEM.TRIGGER_ITEM; call_form('trac_calendar',no_hide); message('Date passée en mode varchar2 : '||:global.var_date); date_tmp := TO_DATE(:global.var_date,'DD/MM/YYYY'); message ('La date passée en argument est : '||date_tmp); copy(TO_DATE(:global.var_date,'DD/MM/YYYY'),p_champ1); erase('global.var_date'); END;ceci exactement me donne une date 14-FEV-05 alors que je précise dans le to_date le format DD/MM/YYYY
Code : Sélectionner tout - Visualiser dans une fenêtre à part date_tmp := TO_DATE(:global.var_date,'DD/MM/YYYY');
Comprends paset vous??
Merci d'avance
Partager