IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Comparer une date avec DateCreated


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Comparer une date avec DateCreated
    Bonjour,

    Je voudrais lire un fichier xml particulier et récupérer une information contenue à l'intérieur.

    Pour pouvoir choisi le fichier xml voulus, je veut faire un tri sur la date et prendre celui qui à une date en particulier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    If oFSo.FolderExists(stRep) Then
     
     
    	For Each oF1 In oFSo.GetFolder(stRep).Files
     
    	If  oF1.Type = "XML Document"  then
    		If  Left(oF1.Name,3)= "BEX" Then
    		Dat = oF1.DateCreated
     
    			If dat > MyMonth   Then '#7/28/2013 08:00:00 PM#
    			fichier = oF1.Name
    			MsgBox oF1.Name
    			'MsgBox oF1.Name
    			End If
    	    End IF	
    	End If	
    	Next
    xmlDoc.load(fichier)
    Mymonth contient la date du jour mise sous la forme #JJ/MM/AAAA hh:mm:ss PM#

    Je voudrait donc comparer MyMonth avec oF1.DateCreated afin de selectionner un seul fichier xml sur les nombreux contenue dans le dossier.
    Le problème est que dans tout les cas, il ne trouve pas le fichier si je compare avec MyMonth. Si je met la valeur date en dur : #7/28/2013 08:00:00 PM#, ça fonctionne.
    Y a t'il un moyen pour comparer les deux dates?
    Je pense que le problème sont les guillemet contenue par MyMonth : "#7/28/2013 08:00:00 PM#" qui empèche la comparaison.

    Merci.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    Mymonth contient la date du jour mise sous la forme #JJ/MM/AAAA hh:mm:ss PM#
    ....
    Je pense que le problème sont les guillemet contenue par MyMonth : "#7/28/2013 08:00:00 PM#"
    MyMonth indique un 28éme mois ????

    Il semblerait que cela soit plutôt les # qui pose problème car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     MyMonth = "#7/28/2013 08:00:00 PM#"
     MyMonth = replace(MyMonth,"#","")
     msgbox cdate(MyMonth)
     
     DateCreatFichier = "7/28/2012 08:00:00 PM"
     
     if DateCreatFichier >= MyMonth then
            msgbox "DateCreatFichier est plus grand que MyMonth"
            else
            msgbox "DateCreatFichier est plus petit que MyMonth"
     end if
    Là, la condition est bien vérifiée.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Merci de la réponse.

    En effet erreur de ma part MyMonth est en format #MM/JJ/AAAA hh:mm:ss PM#

    Mais j'ai déjà essayé sans les # mais ça n'a rien changé. Je ne rentrait jamais dans ce if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dat = oF1.DateCreated
     If dat > MyMonth   Then 'ici le résultat n'est jamais OK
    alors que avec cette ligne, il rentre dans le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dat = oF1.DateCreated
     If dat > #7/28/2013 08:00:00# Then 'ici je rentre dans le if sans les guillement(avec je ne rentre pas)
    Donc je ne comprend pas trop pourquoi la même valeur ne marche pas dans les deux cas lorsque je les compare avec oF1.DateCreated

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    encore un problème de cast
    la propriété DateCreated renvoie une valeur de type Date
    pour que l'opérateur de comparaison fonctionne de façon pertinente (et à moins savoir exactement ce que l'on fait),
    il faut toujours procéder à un transtypage explicite avant de comparer les variables
    Je pense que le problème sont les guillemet contenue par MyMonth : "#7/28/2013 08:00:00 PM#" qui empèche la comparaison.
    exact
    CDate est effectivement la fonction indispensable mais il faut lui fournir une valeur compatible
    par exemple le cast sur une valeur déclarée est valide mais échoue quand il s'agit d'une chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyMonth=CDate(#7/30/2013 08:00:00 PM#)
    comment est obtenu MyMonth ?
    si c'est déjà une variable de type chaine, il faut fournir à la fonction CDate une chaine de cette forme "7/28/2013 08:00:00" mais avec un piège en prime
    comme l'indique la doc, CDate reconnait le format selon les paramètres régionaux.
    si la date est ambiguë, elle se conformera à ces paramètres
    exemple sur une machine paramétrée en français "7/8/2013" sera interprété comme le 7 août et non comme le 8 juillet...
    il faudra donc non seulement éliminer les caractères superflus mais également inverser les deux premières valeurs
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Bonjour, merci de ces infos.
    Pour la date j'utilise une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Function trouverdate(MyFichier) 'MyFicher = |M|DD-1|YYYY|
            MyTxt = Split(MyFichier, "|")
                    x = 0: MyFichier = "": MyFLG = False
                    Do Until x = UBound(MyTxt) + 1
                        MyCase = MyTxt(x)
                        Select Case MyTxt(x)
                            Case "DD", "dd"
                                MyTxt(x) = Day(Now) 'Day(DateAdd("d", - MyDiff, Now))
                                MyTxt(x) = Digit(MyTxt(x))
                                MyTxt(x) = MyTxt(x) & "/"
                            Case "D", "d"
                                MyTxt(x) = Day(Now) & "/" 'Day(DateAdd("d", - MyDiff, Now))
                            Case "MM", "mm"
                                MyTxt(x) = Month(Now)
                                MyTxt(x) = Digit(MyTxt(x))
                                MyTxt(x) = MyTxt(x) & "/"
                            Case "M", "m"
                                MyTxt(x) = Month(Now)
                                MyTxt(x) = MyTxt(x) & "/"
                            Case "YY", "yy"
                                MyTxt(x) = Year(Now)
                            Case "YYYY", "yyyy"
                                MyTxt(x) = Year(Now)
                            Case "DD-1"
                                 MyTxt(x) = Day(Now - 1)
                                 MyTxt(x) = Digit(MyTxt(x))
                                 MyTxt(x) = MyTxt(x) & "/"
                            Case "DD-4"
                                MyTxt(x) = Day(Now - 4)
                                 MyTxt(x) = MyTxt(x) & "/"
                    Case Else
                End Select
     
                Select Case MyFichier
                    Case ""
                        MyFichier = MyTxt(x)
                    Case Else
                        MyFichier = MyFichier & MyTxt(x)
                End Select
                x = x + 1
            Loop
        trouverdate = MyFichier
    End Function
     
    Function Digit(MyDigit)
    	Select Case Len(MyDigit)
    		Case 1
    			Digit = "0" & MyDigit
    		Case 2
    			Digit = MyDigit
    	End Select
    End Function
    Ce qui me permet de me donner la date sous le format voulus. Je rajoute ensuite l'heure dans la chaine.

    Avec CDate, j'arrive à faire la comparaison correctement.

    Je vais faire quelques tests pour être sur que je récupère la date correctement dans tout les cas de figures.

    Dans tout les cas Merci pour l'aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comparer une date avec DateTime
    Par arngrimur dans le forum C#
    Réponses: 8
    Dernier message: 30/09/2011, 10h24
  2. Comparer une date avec current_stamp
    Par Kel-T dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/08/2011, 15h27
  3. Comparer une date avec la date du jour
    Par Med_be dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/05/2011, 18h24
  4. Réponses: 3
    Dernier message: 31/01/2011, 18h26
  5. Comparer une date avec la date du jour
    Par DEV-10 dans le forum Développement
    Réponses: 25
    Dernier message: 11/08/2009, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo