Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Bonjour,
Lorsque je souhaite modifier un enregistrement de ma base de données SQLite, la date ancienne enregistrée dans un champ de cette bdd ne s'affiche pas dans le contrôle GUICtrlCreateDate du formulaire destiné à modifier cet enregistrement. Elle est systématiquement remplacée par la date du jour de la modification. Ainsi un enregistrement daté du 01/01/2020 est remplacé dans le contrôle GUICtrlCreateDate par la date d'aujourd'hui 07/02/2020.
Y a-t-il un moyen de forcer le formulaire à réafficher non pas la date du jour de la modification, mais celle enregistrée dans la base de données ?
Je vous remercie de votre réponse.
Lorsque je souhaite modifier un enregistrement de ma base de données SQLite, la date ancienne enregistrée dans un champ de cette bdd ne s'affiche pas dans le contrôle GUICtrlCreateDate du formulaire destiné à modifier cet enregistrement. Elle est systématiquement remplacée par la date du jour de la modification. Ainsi un enregistrement daté du 01/01/2020 est remplacé dans le contrôle GUICtrlCreateDate par la date d'aujourd'hui 07/02/2020.
Y a-t-il un moyen de forcer le formulaire à réafficher non pas la date du jour de la modification, mais celle enregistrée dans la base de données ?
Je vous remercie de votre réponse.
Modifié en dernier par GMH le sam. 08 févr. 2020 16:08, modifié 1 fois.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Est-ce que la date envoyée au controle GUICtrlCreateDate est bien au format "yyyy/mm/dd" ?
Si le controle ne "comprend" pas ce qu'on lui envoie, il affiche par défaut la date d'aujourd'hui
Si le controle ne "comprend" pas ce qu'on lui envoie, il affiche par défaut la date d'aujourd'hui
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Bonsoir et merci pour votre réponse,
Voici ma création de contrôle :
Voici ma création de contrôle :
Je souhaite en effet l'ordre Année/Mois/Jour plutôt que l'ordre par défaut (dd/mm/yyyy).$inputDate = GUICtrlCreateDate("",1240,90,250,20)
Global $sStyle = "yyyy/mm/dd"
GUICtrlSendMsg($inputDate, $DTM_SETFORMATW, 0, $sStyle)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Le GUICtrlSendMsg est inutile ici puisque ce $sStyle est déjà le style par défaut du controle. Je parle du format des données envoyées au controle
GUICreate("test", 200, 200, 800, 200)
; affiche la date d'aujourd'hui
$date = GUICtrlCreateDate("test", 10, 10, 185, 20)
GUISetState(@SW_SHOW)
Msgbox(0,"1", "suivant")
; ça marche pas :
GuiCtrlSetData($date, "25/12/2019")
Msgbox(0,"2", "suivant")
; ça marche :
GuiCtrlSetData($date, "2019/12/25")
Sleep(2000)
; affiche la date d'aujourd'hui
$date = GUICtrlCreateDate("test", 10, 10, 185, 20)
GUISetState(@SW_SHOW)
Msgbox(0,"1", "suivant")
; ça marche pas :
GuiCtrlSetData($date, "25/12/2019")
Msgbox(0,"2", "suivant")
; ça marche :
GuiCtrlSetData($date, "2019/12/25")
Sleep(2000)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Je vous remercie pour votre code. Je l'ai testé. Le "2019/12/25" s'affiche Mercredi 25 décembre 2020 dans le formulaire, et non 2019/12/25
Les 2 choix suivants n'affichent pas la date enregistrée dans le formulaire. Ils affichent la date d'aujourd'hui (sous le format : 08/02/2020 (alors que je l'ai enregistrée sous le format yyyy/MM/dd) pour le premier , et "Samedi 08 février 2020" pour le second).
Choix 1 : $inputDate = GUICtrlCreateDate("",1240,90,250,20,$DTS_SHORTDATEFORMAT)
Choix 2 : $inputDate = GUICtrlCreateDate("",1240,90,250,20)
Les 2 choix suivants n'affichent pas la date enregistrée dans le formulaire. Ils affichent la date d'aujourd'hui (sous le format : 08/02/2020 (alors que je l'ai enregistrée sous le format yyyy/MM/dd) pour le premier , et "Samedi 08 février 2020" pour le second).
Choix 1 : $inputDate = GUICtrlCreateDate("",1240,90,250,20,$DTS_SHORTDATEFORMAT)
Choix 2 : $inputDate = GUICtrlCreateDate("",1240,90,250,20)
- TommyDDR
- Modérateur
- Messages : 2087
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
J'ai testé le code de mikell et il fonctionne bien.
Et comme il a déjà beaucoup trop été dit sur ce forum : merci d'envoyer un code sans erreur de compilation qui puisse reproduire votre problème.
Testez le code PURE de mikell, sans vouloir l'implémenter dans le votre, si cela ne marche pas... (en fait ce n'est pas possible, ça devrait marcher).Et comme il a déjà beaucoup trop été dit sur ce forum : merci d'envoyer un code sans erreur de compilation qui puisse reproduire votre problème.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Je vous assure que le code de Mikel testé tel quel, sans ajout ni retrait, affiche "mercredi 25 décembre 2019" plutôt que "2019/12/25". Je ne l'ai pas inclus dans mon propre code pour le tester. Et chez vous, vous obtenez la même chose : c'est bien ce qui apparaît dans votre copie d'écran ci-dessus.
Après bien des tentatives, j'ai rajouté le code :
1. c'est bien la date enregistrée dans la base SQLite qui s'affiche
2. l'affichage est bien sous le format yyyy/DD/dd
Je n'ai pas tout compris. Mais à force d'ajouts ou de suppressions dans mon code, j'ai obtenu le bon affichage... Je ne touche plus à rien !
Merci à tous deux pour vos messages.
Après bien des tentatives, j'ai rajouté le code :
Et maintenant, tout fonctionne bien :$inputDate = GUICtrlCreateDate("",1240,90,250,20)
Global $sStyle = "yyyy/MM/dd"
GUICtrlSendMsg($inputDate, $DTM_SETFORMATW, 0, $sStyle)
1. c'est bien la date enregistrée dans la base SQLite qui s'affiche
2. l'affichage est bien sous le format yyyy/DD/dd
Je n'ai pas tout compris. Mais à force d'ajouts ou de suppressions dans mon code, j'ai obtenu le bon affichage... Je ne touche plus à rien !
Merci à tous deux pour vos messages.
- jchd
- AutoIt MVPs (MVP)
- Messages : 2273
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Je vois une incompréhension ici.
A) Dans une BdD il est hautement recommandé de stocker les dates sous une forme triable, soit Julian day, Julian date, Unix epoch, texte (YYYY-MM-DD). Les fonctions de date de SQLite comprennent tous ces formats et bien plus, mais pas YYYY/MM/DD et il est bien pratique de pouvoir faire
select * from mytable where mydate between '2019-10-01' and '2019-10-31'
ou
select * from mytable where mydate between date('now', '-1 month', '+1 week', 'weekday 3') and date('now')
(entre le second mercredi du mois dernier et aujourd'hui)
B) Un contrôle Date de Windows accepte en entrée et entre autres les formats YYYY-MM-DD ou YYYY/MM/DD, indifféremment, le tout sous locale Fr-Fr par défaut.
C) Le format d'affichage des dates dans un contrôle Date Windows n'a rien à voir avec A) et B) : il répond au style du contrôle. Par exemple : $DTS_SHORTDATEFORMAT affiche 08/02/2020
alors que le défaut (sous locale Fr-Fr par défaut)
$DTS_LONGDATEFORMAT (style par défaut) affiche samedi 08 février 2020
Il est facile de changer le format de date régional (changement de locale), sos W10 :
Paramètres
Heure et Langue
Mise en forme de la date, de l'heure et région
Modifier les formats de données
Date courte 05/04/2017 -> 2017-05-04
Avec ce dernier réglage en place, le code suivant fait ce qu'on lui demande :
EDIT : on peut aussi procéder comme l'édit précédent, mais ça sera au coup par coup, tandis que la modification des paramètre d'affichage Windows est permanente.
A) Dans une BdD il est hautement recommandé de stocker les dates sous une forme triable, soit Julian day, Julian date, Unix epoch, texte (YYYY-MM-DD). Les fonctions de date de SQLite comprennent tous ces formats et bien plus, mais pas YYYY/MM/DD et il est bien pratique de pouvoir faire
select * from mytable where mydate between '2019-10-01' and '2019-10-31'
ou
select * from mytable where mydate between date('now', '-1 month', '+1 week', 'weekday 3') and date('now')
(entre le second mercredi du mois dernier et aujourd'hui)
B) Un contrôle Date de Windows accepte en entrée et entre autres les formats YYYY-MM-DD ou YYYY/MM/DD, indifféremment, le tout sous locale Fr-Fr par défaut.
C) Le format d'affichage des dates dans un contrôle Date Windows n'a rien à voir avec A) et B) : il répond au style du contrôle. Par exemple : $DTS_SHORTDATEFORMAT affiche 08/02/2020
alors que le défaut (sous locale Fr-Fr par défaut)
$DTS_LONGDATEFORMAT (style par défaut) affiche samedi 08 février 2020
Il est facile de changer le format de date régional (changement de locale), sos W10 :
Paramètres
Heure et Langue
Mise en forme de la date, de l'heure et région
Modifier les formats de données
Date courte 05/04/2017 -> 2017-05-04
Avec ce dernier réglage en place, le code suivant fait ce qu'on lui demande :
Code : Tout sélectionner
GUICreate("test", 200, 200, 800, 200)
; affiche la date d'aujourd'hui
$date = GUICtrlCreateDate("test", 10, 10, 185, 20, $DTS_SHORTDATEFORMAT)
GUISetState(@SW_SHOW)
Msgbox(0,"1", "suivant")
; ça marche :
GuiCtrlSetData($date, "2019/12/25")
Msgbox(0,"2", "suivant")
; ça marche aussi :
GuiCtrlSetData($date, "2019-12-25")
Sleep(2000)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
On dirait bien
Quoique si on s'en tient strictement au titre du sujet et au contenu du post #1 , mes réponses n'étaient pas si inappropriées que ça ...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)
- Messages : 2273
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Je ne pensais pas à toi
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Aucune réponse n'est "inappropriée". Tous les messages font avancer vers la solution. Je vous remercie tous.
Concernant le changement du format de date régional dans windows, l'inconvénient me semble que l'on va imposer ce format dans tous les logiciels faisant appel aux dates. Ce qui n'est pas forcément souhaité.
Encore merci.
Concernant le changement du format de date régional dans windows, l'inconvénient me semble que l'on va imposer ce format dans tous les logiciels faisant appel aux dates. Ce qui n'est pas forcément souhaité.
Encore merci.
Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
RECTIFICATION de MON MESSAGE PRÉCÉDENT :
Une inattention m'a conduit à écrire "appropriée" au lieu d' "inappropriée" dans le message précédent, inversant ainsi ma pensée. J'espère que tous avez compris qu'il s'agissait d'un lapsus.
Une inattention m'a conduit à écrire "appropriée" au lieu d' "inappropriée" dans le message précédent, inversant ainsi ma pensée. J'espère que tous avez compris qu'il s'agissait d'un lapsus.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] date remplacée dans un contrôle GUICtrlCreateDate
Intéressant... et ce n'est PAS mentionné dans le fichier d'aide !!
"The preselected date (always as "yyyy/mm/dd")."
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)
- Messages : 2273
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
C'est ce que j'ai constaté sur mon W10. J'ignore si c'est pareil pour les versions antérieures.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Si ça marche sur mon vieux XP et sur ton W10 , aucune raison pour que ça ne marche pas aussi pour les versions intermédiaires
Et si c'est bien le cas, ça mériterait une rectification du fichier d'aide - entre autres pour la compatibilité avec SQlite que tu mentionnes
Et si c'est bien le cas, ça mériterait une rectification du fichier d'aide - entre autres pour la compatibilité avec SQlite que tu mentionnes
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)
- Messages : 2273
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate
Note ça dans le Trac si tu peux, je n'ai plus d'accès aux fichiers d'aide (tout paumé) et guère de temps actuellement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.