Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de date sous vb6

4 réponses
Avatar
messi
Bonjour,j'ai une visionneuse qui fonctionne sous vb6 ,le probleme est des que je suis passe en 2010 elle est revenu en 2001 le premier janvier et le 2 janvier ! passe au 2 fevrier 20001 ,au 3 janvier 3 mars 2001 ect... voici une ligne de commande dans la base qui vous dira plus que moi .
DateStr = " 200" & Right(Left(Str(dateNum), 2), 1) 'enlever un 0 en 201O :)

cette ligne veux dire quoi ???
j'ai enleve un 0 mais cela ne change rien ....

merci d'avance si reponse il y a

4 réponses

Avatar
Jean-marc
>messi wrote:



Hello,

Bonjour,j'ai une visionneuse qui fonctionne sous vb6 ,le probleme est
des que je suis passe en 2010 elle est revenu en 2001 le premier
janvier et le 2 janvier ! passe au 2 fevrier 20001 ,au 3 janvier 3
mars 2001 ect... voici une ligne de commande dans la base qui vous
dira plus que moi .



Voyons voir ...

DateStr = " 200" & Right(Left(Str(dateNum), 2), 1) 'enlever un 0
en 201O :)



==> OH, MON DIEU !!

cette ligne veux dire quoi ???



En substance, elle veut dire que celui qui a "programmé" ça devrait
penser à se trouver un autre hobby, genre la danse classique
ou le yoga.

j'ai enleve un 0 mais cela ne change rien ....



Tu m'étonnes :-)

merci d'avance si reponse il y a



Visiblement, la seule façon de faire est de ré-écrire totalement
la "gestion" (note les guillemets) de date de ce programme. En l'état,
c'est juste n'importe quoi (en fait ça marchait par pur hasard (cf. la
doc de Str...) pour les années entre 2000 et 2009).

Pour régler ça:
- Regarde ce qui se trouve dans dateNum juste avant l'appel à la
ligne que tu cites en.
- Regarde la doc des fonctions CDate() et Format$()
- Déduis en la modif à apporter.
- Tu peux aussi utilement consulter la FAQ pour l'usage de Str, Left et
Right:
http://faq.vb.free.fr/index.php?question8

Avec beaucoup de chance, Datenum contient aujourd'hui un truc
du genre 100210, auquel cas tu peux toujours tenter:

dateStr = " 20" & Left$(Trim$(Str$(dateNum)), 2)

=> SANS aucune garantie, car comme je l'ai dit, il suffit de voir la
ligne que tu cites pour comprendre que tout le reste doit être
à l'avenant, c'est à dire à jeter/réécrire.

[En plus, ce que tu décris indique aussi des problèmes sérieux de
confusion entre formats de date (format "français" DD/MM/YYY) et
format US (MM/DD/YYYY) - Un classique, hélas...]

Bref, bon courage :o)

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Vincent Guichard
Le 10/02/2010 13:31, Jean-marc a écrit :
Voyons voir ...

DateStr = " 200"& Right(Left(Str(dateNum), 2), 1) 'enlever un 0
en 201O :)



==> OH, MON DIEU !!

cette ligne veux dire quoi ???



En substance, elle veut dire que celui qui a "programmé" ça devrait
penser à se trouver un autre hobby, genre la danse classique
ou le yoga.




Il est clair que le programme est "tombé en marche" sans que le
programmeur ai compris ce qu'il écrivait ^^.
D'un autre coté, il a quand même pris soin de mettre un commentaire p our
expliquer (de façon erronée) ce qu'il conviendrait de faire à parti r de
2010, donc il n'est peut être pas perdu pour le monde ^^.

Avec beaucoup de chance, Datenum contient aujourd'hui un truc
du genre 100210, auquel cas tu peux toujours tenter:

dateStr = " 20" & Left$(Trim$(Str$(dateNum)), 2)



Il faut en effet probablement considérer que dateNum contient la date
au format (année-2000)*10000+mois*100+jour. Dans ce cas j'irais jusqu'à
proposer un :
DateStr = Str$(dateNum10000+2000)
L'avantage étant que cela marchera pour 2010, les années suivantes ET
pour les années antérieures (mais postérieures à 1999 quand mêm e).

Vincent Guichard
Avatar
LE TROLL
Tu as dit "Mon Dieu", oui... je t'écoute ?



_______________________
.
.


"Jean-marc" a écrit dans le message de
news:4b72a72e$0$2858$
>messi wrote:

Hello,

Bonjour,j'ai une visionneuse qui fonctionne sous vb6 ,le probleme est
des que je suis passe en 2010 elle est revenu en 2001 le premier
janvier et le 2 janvier ! passe au 2 fevrier 20001 ,au 3 janvier 3
mars 2001 ect... voici une ligne de commande dans la base qui vous
dira plus que moi .



Voyons voir ...

DateStr = " 200" & Right(Left(Str(dateNum), 2), 1) 'enlever un 0
en 201O :)



==> OH, MON DIEU !!

cette ligne veux dire quoi ???



En substance, elle veut dire que celui qui a "programmé" ça devrait
penser à se trouver un autre hobby, genre la danse classique
ou le yoga.

j'ai enleve un 0 mais cela ne change rien ....



Tu m'étonnes :-)

merci d'avance si reponse il y a



Visiblement, la seule façon de faire est de ré-écrire totalement
la "gestion" (note les guillemets) de date de ce programme. En l'état,
c'est juste n'importe quoi (en fait ça marchait par pur hasard (cf. la
doc de Str...) pour les années entre 2000 et 2009).

Pour régler ça:
- Regarde ce qui se trouve dans dateNum juste avant l'appel à la
ligne que tu cites en.
- Regarde la doc des fonctions CDate() et Format$()
- Déduis en la modif à apporter.
- Tu peux aussi utilement consulter la FAQ pour l'usage de Str, Left et
Right:
http://faq.vb.free.fr/index.php?question8

Avec beaucoup de chance, Datenum contient aujourd'hui un truc
du genre 100210, auquel cas tu peux toujours tenter:

dateStr = " 20" & Left$(Trim$(Str$(dateNum)), 2)

=> SANS aucune garantie, car comme je l'ai dit, il suffit de voir la
ligne que tu cites pour comprendre que tout le reste doit être
à l'avenant, c'est à dire à jeter/réécrire.

[En plus, ce que tu décris indique aussi des problèmes sérieux de
confusion entre formats de date (format "français" DD/MM/YYY) et
format US (MM/DD/YYYY) - Un classique, hélas...]

Bref, bon courage :o)

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
LE TROLL wrote:
Tu as dit "Mon Dieu", oui... je t'écoute ?



Péché d'orgeuil, mon fils ... Allez hop, file à confesse
te faire absoudre ! Non mais !! :-)

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;