OVH Cloud OVH Cloud

De l'aide SVP, un phenomene bizare.

14 réponses
Avatar
Karine
Bonjour,
il se produit qq chose que je n'arrive pas a en trouver la cause dans mon
code VB.
voici mon code

j'ai un tableau avec une variable de type string

Type T_Procedure

DeclReel As String

End Type

quand je fais ce bout de code :

gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")

cela me renvoi :
gT_Proc(i).DeclReel="29/04/2005 12:13:00 + nomdelamachine"

du coup les traitement de date que j'effectue sur gT_Proc(i).DeclReel plante

pourquoi le nom de machine vient-il se mettre a la fin de la date ?
cela ne se produit que sur une seule machine.

Merci d'avance

10 réponses

1 2
Avatar
Gloops
Bonjour Karine,

J'avoue que je comprends mieux que l'autre jour de quoi il retourne.

Chez moi j'obtiens :
? DateAdd("n", 20, "29/04/2005 11:53")
29/04/2005 12:13:00

Je me demande si l'explication n'est pas à chercher en bas de l'aide de
DateAdd (emplacement "Référence à Visual Basic") :
Note Le format de la valeur renvoyée correspondant à la fonction
DateAdd est déterminé par les valeurs du Panneau de configuration, non
par le format qui est passé à l'argument date.

ça dit quoi, si tu tapes "? Now()" dans la fenêtre de débogage ?
Je ne me rappelle pas avoir déjà vu qu'on pouvait y mettre le nom de la
machine, mais je n'ai pas forcément épuisé le sujet ...

Par ailleurs je suis intrigué par ton type T_Procedure, qu'est-ce qu'il
représente ?

Et gTproc(i), pourquoi un index, c'est une procédure liée à une collection ?

ça ne paraît pas directement lié à la question, mais il vaut mieux
s'assurer de savoir où on est ...








_____________________________________
Karine a écrit, le 13/05/2005 15:58 :
Bonjour,
il se produit qq chose que je n'arrive pas a en trouver la cause dans mon
code VB.
voici mon code

j'ai un tableau avec une variable de type string

Type T_Procedure

DeclReel As String

End Type

quand je fais ce bout de code :

gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")

cela me renvoi :
gT_Proc(i).DeclReel="29/04/2005 12:13:00 + nomdelamachine"

du coup les traitement de date que j'effectue sur gT_Proc(i).DeclReel plante

pourquoi le nom de machine vient-il se mettre a la fin de la date ?
cela ne se produit que sur une seule machine.

Merci d'avance



Avatar
Karine
Salut,

T_Procedure est un tableau avec plusieurs variables, je n'en ai affiché
qu'une seule.
mais ca ne vient pas du tableau ni du type effectivement.
j'ai fais le test en chargeant dans des variable de type date et string mais
toujour le probleme de cette chaine de caractere qui vient se mettre a la fin
aprés avoir effectué le DateAdd

aprés d'autre test, en fait ce n'est pas le nom de la machine qui vient
s'ajouter a la fin mais le nom de l'utilisateur.

pas facile car ce n'est meme pas ma machine mais celle d'un client et je
fait des test en envoyer des exe de test qui affiche des print ecran.



"Gloops" a écrit :

Bonjour Karine,

J'avoue que je comprends mieux que l'autre jour de quoi il retourne.

Chez moi j'obtiens :
? DateAdd("n", 20, "29/04/2005 11:53")
29/04/2005 12:13:00

Je me demande si l'explication n'est pas à chercher en bas de l'aide de
DateAdd (emplacement "Référence à Visual Basic") :
Note Le format de la valeur renvoyée correspondant à la fonction
DateAdd est déterminé par les valeurs du Panneau de configuration, non
par le format qui est passé à l'argument date.

ça dit quoi, si tu tapes "? Now()" dans la fenêtre de débogage ?
Je ne me rappelle pas avoir déjà vu qu'on pouvait y mettre le nom de la
machine, mais je n'ai pas forcément épuisé le sujet ...

Par ailleurs je suis intrigué par ton type T_Procedure, qu'est-ce qu'il
représente ?

Et gTproc(i), pourquoi un index, c'est une procédure liée à une collection ?

ça ne paraît pas directement lié à la question, mais il vaut mieux
s'assurer de savoir où on est ...








_____________________________________
Karine a écrit, le 13/05/2005 15:58 :
> Bonjour,
> il se produit qq chose que je n'arrive pas a en trouver la cause dans mon
> code VB.
> voici mon code
>
> j'ai un tableau avec une variable de type string
>
> Type T_Procedure
>
> DeclReel As String
>
> End Type
>
> quand je fais ce bout de code :
>
> gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")
>
> cela me renvoi :
> gT_Proc(i).DeclReel="29/04/2005 12:13:00 + nomdelamachine"
>
> du coup les traitement de date que j'effectue sur gT_Proc(i).DeclReel plante
>
> pourquoi le nom de machine vient-il se mettre a la fin de la date ?
> cela ne se produit que sur une seule machine.
>
> Merci d'avance
>




Avatar
Karine
J'ai fais un test supplementaire sur la machine de mon client et voila le
resultat :

MsgBox "Mess 3 : " & Date & " " & Time

Affiche : 13/05/2005 16:55:54 + une chaine de caractére

Donc c'est bien au niveau des paramétre reginaux sur l'heure de la machine.

mais où ? et comment l'enlever ? pas par code mais en modifiant les
parametres de la machine.

enfin j'avance dans mon debogage c'est deja ca !

"Gloops" a écrit :

Bonjour Karine,

J'avoue que je comprends mieux que l'autre jour de quoi il retourne.

Chez moi j'obtiens :
? DateAdd("n", 20, "29/04/2005 11:53")
29/04/2005 12:13:00

Je me demande si l'explication n'est pas à chercher en bas de l'aide de
DateAdd (emplacement "Référence à Visual Basic") :
Note Le format de la valeur renvoyée correspondant à la fonction
DateAdd est déterminé par les valeurs du Panneau de configuration, non
par le format qui est passé à l'argument date.

ça dit quoi, si tu tapes "? Now()" dans la fenêtre de débogage ?
Je ne me rappelle pas avoir déjà vu qu'on pouvait y mettre le nom de la
machine, mais je n'ai pas forcément épuisé le sujet ...

Par ailleurs je suis intrigué par ton type T_Procedure, qu'est-ce qu'il
représente ?

Et gTproc(i), pourquoi un index, c'est une procédure liée à une collection ?

ça ne paraît pas directement lié à la question, mais il vaut mieux
s'assurer de savoir où on est ...








_____________________________________
Karine a écrit, le 13/05/2005 15:58 :
> Bonjour,
> il se produit qq chose que je n'arrive pas a en trouver la cause dans mon
> code VB.
> voici mon code
>
> j'ai un tableau avec une variable de type string
>
> Type T_Procedure
>
> DeclReel As String
>
> End Type
>
> quand je fais ce bout de code :
>
> gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")
>
> cela me renvoi :
> gT_Proc(i).DeclReel="29/04/2005 12:13:00 + nomdelamachine"
>
> du coup les traitement de date que j'effectue sur gT_Proc(i).DeclReel plante
>
> pourquoi le nom de machine vient-il se mettre a la fin de la date ?
> cela ne se produit que sur une seule machine.
>
> Merci d'avance
>




Avatar
Gloops
Bon, histoire de se recentrer, pas moyen d'afficher une date, par
exemple Now(), histoire de voir comment elle s'affiche ?

ça serait pratique de savoir ce qu'il y a comme format de date dans le
panneau de configuration.

Voici quelques formatages et ce que j'obtiens en réponse :
? Now()
13/05/2005 17:27:03
? Format(Now(), "")
13/05/2005 17:25:01
? Format(Now(), "short date")
13/05/2005
? Format(Now(), "long date")
vendredi 13 mai 2005
? Format(Now(), "short time")
17:25
? Format(Now(), "short date") + " " + Format(Now(), "long time")
13/05/2005 17:24:41

Et pour être vraiment sûr d'avoir jour/mois/année heure:minute:seconde :
? Format(Now(), "dd/MM/yy hh:mm:ss")
13/05/05 17:29:00

mais attention, dans ce dernier cas ça donnera la même chose si tu fais
tourner ça en Angleterre, et ils n'aimeront pas.
Avatar
Gloops
Apparemment la première hypothèse était la bonne, la petite note en bas
de l'aide donnait la réponse.

Ensuite comment faire dépend du système d'exploitation du client, et est
donc à voir dans les archives du newsgroup correspondant.

Pour Windows XP : menu démarrage, panneau de configuration, "Options
régionales, date, heure et langue", "Modifier le format des nombres, des
dates et de l'heure". Après c'est une boîte de dialogue, qui te permet
de choisir le formatage par défaut d'un pays, et qui comporte aussi un
bouton Personnaliser, qui ouvre une autre boîte de dialogue avec un
onglet Date.

Si le panneau de configuration n'affiche pas les illustrations, il peut
y avoir une étape différente.

Tu as bien dit que tu ne voulais pas le faire par programmation,
n'est-ce pas ?
Avatar
Guy DETIENNE
Salut ;O)

Le nom de la machine ne peut pas atterrir comme par magie dans ton
tableau...
VB n'a pas de fonction intégrée pour connaître le nom d'une machine. Alors
comment arrive-t-elle là ?

Un traitement boiteux est très certainement fait quelque part. Mais où ?
Mais même avec tes indications, c'est un phénomène étrange qui ne pourrait
se régler qu'en debugant l'application.

Guy


"Karine" a écrit dans le message de
news:
Salut,

T_Procedure est un tableau avec plusieurs variables, je n'en ai affiché
qu'une seule.
mais ca ne vient pas du tableau ni du type effectivement.
j'ai fais le test en chargeant dans des variable de type date et string


mais
toujour le probleme de cette chaine de caractere qui vient se mettre a la


fin
aprés avoir effectué le DateAdd

aprés d'autre test, en fait ce n'est pas le nom de la machine qui vient
s'ajouter a la fin mais le nom de l'utilisateur.

pas facile car ce n'est meme pas ma machine mais celle d'un client et je
fait des test en envoyer des exe de test qui affiche des print ecran.





"Gloops" a écrit :

> Bonjour Karine,
>
> J'avoue que je comprends mieux que l'autre jour de quoi il retourne.
>
> Chez moi j'obtiens :
> ? DateAdd("n", 20, "29/04/2005 11:53")
> 29/04/2005 12:13:00
>
> Je me demande si l'explication n'est pas à chercher en bas de l'aide de
> DateAdd (emplacement "Référence à Visual Basic") :
> Note Le format de la valeur renvoyée correspondant à la fonction
> DateAdd est déterminé par les valeurs du Panneau de configuration, non
> par le format qui est passé à l'argument date.
>
> ça dit quoi, si tu tapes "? Now()" dans la fenêtre de débogage ?
> Je ne me rappelle pas avoir déjà vu qu'on pouvait y mettre le nom de la
> machine, mais je n'ai pas forcément épuisé le sujet ...
>
> Par ailleurs je suis intrigué par ton type T_Procedure, qu'est-ce qu'il
> représente ?
>
> Et gTproc(i), pourquoi un index, c'est une procédure liée à une


collection ?
>
> ça ne paraît pas directement lié à la question, mais il vaut mieux
> s'assurer de savoir où on est ...
>
>
>
>
>
>
>
>
> _____________________________________
> Karine a écrit, le 13/05/2005 15:58 :
> > Bonjour,
> > il se produit qq chose que je n'arrive pas a en trouver la cause dans


mon
> > code VB.
> > voici mon code
> >
> > j'ai un tableau avec une variable de type string
> >
> > Type T_Procedure
> >
> > DeclReel As String
> >
> > End Type
> >
> > quand je fais ce bout de code :
> >
> > gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")
> >
> > cela me renvoi :
> > gT_Proc(i).DeclReel="29/04/2005 12:13:00 + nomdelamachine"
> >
> > du coup les traitement de date que j'effectue sur gT_Proc(i).DeclReel


plante
> >
> > pourquoi le nom de machine vient-il se mettre a la fin de la date ?
> > cela ne se produit que sur une seule machine.
> >
> > Merci d'avance
> >
>
>


Avatar
Karine
Effectivement je ne veut pas changer tout le code de mon logiciel,
car le probleme vient de la machine et des parametre de l'heure.
j'ai posté un message sur le forum XP mais je n'ai pas eu de reponse qui
resout le probleme, a part que l'on peut dans la base de registre modifier
les format de l'heure et mettre une chaine alors quand passant par le panneau
on ne peut pas, mais je n'est pas reproduit le cas sur ma machine en
modifiant le registre.

"Gloops" a écrit :

Apparemment la première hypothèse était la bonne, la petite note en bas
de l'aide donnait la réponse.

Ensuite comment faire dépend du système d'exploitation du client, et est
donc à voir dans les archives du newsgroup correspondant.

Pour Windows XP : menu démarrage, panneau de configuration, "Options
régionales, date, heure et langue", "Modifier le format des nombres, des
dates et de l'heure". Après c'est une boîte de dialogue, qui te permet
de choisir le formatage par défaut d'un pays, et qui comporte aussi un
bouton Personnaliser, qui ouvre une autre boîte de dialogue avec un
onglet Date.

Si le panneau de configuration n'affiche pas les illustrations, il peut
y avoir une étape différente.

Tu as bien dit que tu ne voulais pas le faire par programmation,
n'est-ce pas ?




Avatar
Patrice Henrio
Une idée comme ça même si je n'y connais rien en format d'heure.
je pense que ce format figure dans une clé de registre sous forme d'une
chaîne. N'est-il pas possible d'analyser cette chaîne pour ne ressortir que
les éléments dont on a besoin ?

"Karine" a écrit dans le message de news:

Effectivement je ne veut pas changer tout le code de mon logiciel,
car le probleme vient de la machine et des parametre de l'heure.
j'ai posté un message sur le forum XP mais je n'ai pas eu de reponse qui
resout le probleme, a part que l'on peut dans la base de registre modifier
les format de l'heure et mettre une chaine alors quand passant par le
panneau
on ne peut pas, mais je n'est pas reproduit le cas sur ma machine en
modifiant le registre.

"Gloops" a écrit :

Apparemment la première hypothèse était la bonne, la petite note en bas
de l'aide donnait la réponse.

Ensuite comment faire dépend du système d'exploitation du client, et est
donc à voir dans les archives du newsgroup correspondant.

Pour Windows XP : menu démarrage, panneau de configuration, "Options
régionales, date, heure et langue", "Modifier le format des nombres, des
dates et de l'heure". Après c'est une boîte de dialogue, qui te permet
de choisir le formatage par défaut d'un pays, et qui comporte aussi un
bouton Personnaliser, qui ouvre une autre boîte de dialogue avec un
onglet Date.

Si le panneau de configuration n'affiche pas les illustrations, il peut
y avoir une étape différente.

Tu as bien dit que tu ne voulais pas le faire par programmation,
n'est-ce pas ?






Avatar
Gloops
Bonjour,

Deux perspectives à considérer

1/ paramétrage
=============
Tu veux dire que le client n'a toujours pas réussi à rectifier le format
d'heure en passant par le panneau de configuration ?

En lui faisant des copies d'écran, est-ce que ça ne marche pas mieux ?

Si cette affaire-là dure on va finir par lui écrire un fichier .reg qui
mettra tout d'aplomb ...

Cela étant, tu as raison de chercher à reproduire le phénomène sur une
autre machine, ça aidera bien pour écrire ledit fichier, et, surtout,
pour le tester.

Est-ce qu'il n'y a pas quelqu'un responsable des configurations chez le
client ? Je sais ça ressemble à une question de shadock ...
Probablement quelqu'un a fait mumuse, mais j'évoquais juste le cas où ça
ne soit pas ça l'explication.

D'autres prestataires interviennent-ils sur la même machine ? Peut-être
une application est-elle allée bidouiller là-dedans, contre les
conventions usuelles. Remarque, c'est vrai qu'il est rare, lorsqu'on ne
respecte pas les conventions usuelles, qu'on fournisse une documentation
solide. Et c'est dommage, parce que si c'est ça l'explication, le
problème se reposera la prochaine fois que l'application en cause sera
lancée.

Entre parenthèses, parmi les applications qui peuvent modifier les
formats, il y a des virus. J'imagine qu'il y aurait eu d'autres
manifestations, et qu'il y a un antivirus à jour qui fonctionne, mais
enfin bon, pour mémoire ...


*

2/ programmation
===============
A propos de convention usuelle, rappelle-toi que le changement du format
d'heure du panneau de configuration ne doit pas faire planter ton
programme, juste modifier l'affichage. Ce cas te montre que ta syntaxe
est trop naïve.

Il faut remplacer
gT_Proc(i).DeclReel = DateAdd("n", 20, "29/04/2005 11:53")

par
gTProc(i).DeclReel = _
Format(DateAdd("n", 20, "29/04/2005 11:53"), "dd/MM/yyyy hh:mm:ss")

à moduler bien sûr selon le reste du programme. Tu n'as pas précisé si
le programme doit tourner dans plusieurs pays, auquel cas il faut bien
approfondir la réflexion.

Ainsi ton programme fonctionnera indépendamment du panneau de
configuration, il ne restera plus qu'à voir si le client est gêné par
l'affichage des dates, par exemple dans sa messagerie. Dans
l'affirmative cela nous renvoie où nous en étions sur notre réflexion
sur le panneau de configuration.

*

Ne pas oublier dans ce dernier cas que la correction du paramétrage de
la machine ne relève pas de la même prestation que le développement d'un
programme (sauf bien sûr si c'est ton programme qui a mis le bazar).
Avatar
Gloops
Essaie cette syntaxe, histoire de rigoler un petit coup ...
(j'ai mis une rupture de ligne après la deuxième virgule)

? Format(DateAdd("n", 20, "29/04/2005 11:53"), _
"dd/MM/yy hh:mm:ss Oh la belle machine !")
1 2