rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
7
21 mars 2006 à 10:25
Salut comme,
baisses pas les bras! :)
L'exemple que je t'indique ne sert pas qu'à t'aider à réaliser, mais surtout à t'aider à comprendre (ce n'est pas inutile de comprendre, tu sauras transposer ce que tu as compris, si tant que je m'explique suffisament bien).
1- Si tu lis ce que j'ai écrit (je sais que j'écris beaucoup, mais il te suffit de lire moins vite), il s'agit d'écrire cette ligne d'instruction dans la fenêtre d'exécution immédiate (communément appelée fenêtre de debuggage), suivie d'un appui sur la touche [Entrée]. Pour y accéder :
- soit ton code n'est pas en marche, tu fais [CTRL]+[G] (ou menu Affichage>>Fenêtre d'exécution), et tu peux tester . L'opérateur ? est l'équivalent de l'instruction Print, dans la fenêtre d'exécution immédiatepanneau de code, là où se situent tes lignes d'instruction, des procédures...) sous la forme : Debug.Print "test".
- soit ton code est en marche, auquel cas il te suffit de faire [CTRL]+[Pause], pour stopper temporairement l'exécution de ton code, puis de faire [CTRL+[G], pour faire apparaître la fenêtre d'exécution immédiate.
2- Cet exemple sert à mettre en évidence (pour ceux qui en douteraient encore), que VB sait très bien gérer les dates, à nous (et à nous seuls) de les lui présenter sous la bonne forme. Je m'explique :
L'instruction Cdbl(#10/09/2001#) fait apparaître la représentation numérique d'une date, et on observe qu'ainsi présentée, aucune équivoque n'est possible.
Cependant, c'est une constante que l'on a fournit, et on a utilisé une notation (#) qui permet à VB (et à d'autres) de comprendre que c'est la représentation d'une constante de type date, et dans la plupart des cas, c'est une variable que l'on possède, et aucun moyen d'utiliser le signe # dans une variable (de type String), ce n'est pas prévu pour.
Le seul point commun entre cette constante et cette variable est le type. En effet, si tu exécutes immédiatement :
?Typename(#10/09/2001#)
VB répond Date
mais :
?typename(format(#10/09/2001#,"DD/MM/YYYY"))
VB répond String
Au risque de fâcher nombre d'entre nous (à tort), 10/09/2001 n'est pas une date (au sens informatique du terme), mais une représentation littérale d'une date.
Malheureusement, c'est ce que tu veux donner en entrée à la fonction Format. Comment veux-tu qu'elle sache quel est le format de la représentation littérale de la date que tu lui (ndrl, puisque qu'il n'est pas prévu dans son prototype qu'on le lui spécifie)?
Il s'agit donc de lui donner une valeur qu'elle peut comprendre, en l'occurence une valeur de type Date. Tu peux essayer toutes les fonctions de travail sur les dates (de VB), elles auront toutes les mêmes difficultés à transtyper ta représentation littérale d'une date, vers une date.
Dans ton malheur, ce que tu ne sais pas, c'est que tu as de la chance. Tu lis ta valeur à partir d'une base de données (en espérant que ce n'est pas une mauvaise base de données, ou une base de données mal utilisée), là où d'autres travaillent avec un fichier texte (et n'ont aucun moyen facile de transformer la représentation littérale d'une date qu'ils lisent, en une date). Et même, en plus, certains ne connaissent pas d'avance le format de toutes leurs représentations littérales de date.
Il te suffit donc, dans ta requete (SQL si c'en est une) de spécifier que tu ne souhaites pas une représentation littérale de date, mais une représentation numérique (normalisation ANSI) de date, qui, comme elle est normalisé est autorisée, par métonymie, à être appelée une Date.
Voilà, tu en sait trop maintenant,
à+
PS: ne te laisses pas abuser par mon ton, qui peut avoir l'air ironique parfois (même souvent), ce n'est qu'une façon de m'exprimer, je n'arrive pas à me contraindre de faire autrement, sinon à écrire avec beucoup moins d'entrain, et donc à écrire beaucoup moins.
rvblogn