Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

#1

Message par GMH »

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.
Modifié en dernier par GMH le sam. 08 févr. 2020 16:08, modifié 1 fois.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5927
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#2

Message par mikell »

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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#3

Message par GMH »

Bonsoir et merci pour votre réponse,

Voici ma création de contrôle :
$inputDate = GUICtrlCreateDate("",1240,90,250,20)
Global $sStyle = "yyyy/mm/dd"
GUICtrlSendMsg($inputDate, $DTM_SETFORMATW, 0, $sStyle)
Je souhaite en effet l'ordre Année/Mois/Jour plutôt que l'ordre par défaut (dd/mm/yyyy).

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5927
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#4

Message par mikell »

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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#5

Message par GMH »

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)

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1832
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#6

Message par TommyDDR »

J'ai testé le code de mikell et il fonctionne bien.
test.png
test.png (2.57 Kio) Vu 753 fois
test.png
test.png (2.57 Kio) Vu 753 fois
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

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

#7

Message par GMH »

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 :
$inputDate = GUICtrlCreateDate("",1240,90,250,20)
Global $sStyle = "yyyy/MM/dd"
GUICtrlSendMsg($inputDate, $DTM_SETFORMATW, 0, $sStyle)
Et maintenant, tout fonctionne bien :
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)
AutoIt MVPs (MVP)
Messages : 2116
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

#8

Message par jchd »

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 :

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)
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.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5927
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#9

Message par mikell »

jchd a écrit :
sam. 08 févr. 2020 16:48
Je vois une incompréhension ici.
On dirait bien :mrgreen:
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 )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2116
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

#10

Message par jchd »

Je ne pensais pas à toi ;-)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

#11

Message par GMH »

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.

GMH
Niveau 5
Niveau 5
Messages : 181
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

#12

Message par GMH »

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.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5927
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: [..] date remplacée dans un contrôle GUICtrlCreateDate

#13

Message par mikell »

jchd a écrit :
sam. 08 févr. 2020 16:48
Un contrôle Date de Windows accepte en entrée et entre autres les formats YYYY-MM-DD ou YYYY/MM/DD
Intéressant... et ce n'est PAS mentionné dans le fichier d'aide !! :twisted:
"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 )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2116
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

#14

Message par jchd »

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é.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5927
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : En ligne

Re: [R] date remplacée dans un contrôle GUICtrlCreateDate

#15

Message par mikell »

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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2116
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

#16

Message par jchd »

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é.

Répondre