Datediff qualificateur incorrecte

Résolu
bl1919 Messages postés 37 Date d'inscription samedi 30 juillet 2011 Statut Membre Dernière intervention 23 août 2011 - 17 août 2011 à 16:14
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 18 août 2011 à 03:28
bonjour,
voici le code de ma fonction datediff et j'ai une erreur de compilation "qualificateur incrrecte".veuillez m'aidez svp.
Public Function Date_Compare(dateinterval as string, t1 As Date, t2 As Date) As Long
Dim ReturnValue As Long
Dim diff_days1 As Integer
Dim diff_days2 As Integer
Dim diff_hours1 As Integer
Dim diff_hours2 As Integer
Dim diff_minutes1 As Integer
Dim diff_minutes2 As Integer
Dim diff_seconds1 As Integer
Dim diff_seconds2 As Integer
Dim d As Date
d = Now
diff_days1 = DateDiff(dateInterval.Day, d, t1)
diff_days2 = DateDiff(dateInterval.Day, d, t2)
diff_hours1 = DateDiff(dateInterval.hour, d, t1)
diff_hours2 = DateDiff(dateInterval.hour, d, t2)
diff_minutes1 = DateDiff(dateInterval.Minute, d, t1)
diff_minutes2 = DateDiff(dateInterval.Minute, d, t2)
diff_seconds1 = DateDiff(dateInterval.Second, d, t1)
diff_seconds2 = DateDiff(dateInterval.Second, d, t2)

If diff_days1 - diff_days2 > 0 Then
 ReturnValue = 1
 ElseIf diff_days1 - diff_days2 < 0 Then
 ReturnValue = -1
 Else
    If diff_hours1 - diff_hours2 > 0 Then
    ReturnValue = 1
    ElseIf diff_hours1 - diff_hours2 > 0 Then
    ReturnValue = -1
    Else
       If diff_minutes1 - diff_minutes2 > 0 Then
       ReturnValue = 1
       ElseIf diff_minutes1 - diff_minutes2 < 0 Then
       ReturnValue = -1
       Else
          If diff_seconds1 - diff_seconds2 > 0 Then
          ReturnValue = 1
          ElseIf diff_seconds1 - diff_seconds2 < 0 Then
          ReturnValue = -1
          Else
          ReturnValue = 0
          End If
       End If
    End If
End If
Date_Compare = ReturnValue
End Function



merci d'avance.

5 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 août 2011 à 17:06
en plus ton parametre dateInterval ne sert
à rien
donc comme ça
Public Function Date_Compare(t1 As Date, t2 As Date) As Long
Dim ReturnValue As Long
Dim diff_days1 As Integer
Dim diff_days2 As Integer
Dim diff_hours1 As Integer
Dim diff_hours2 As Integer
Dim diff_minutes1 As Integer
Dim diff_minutes2 As Integer
Dim diff_seconds1 As Integer
Dim diff_seconds2 As Integer
Dim d As Date
d = Now
diff_days1 = DateDiff("d", d, t1)
diff_days2 = DateDiff("d", d, t2)
diff_hours1 = DateDiff("h", d, t1)
diff_hours2 = DateDiff("h", d, t2)
diff_minutes1 = DateDiff("n", d, t1)
diff_minutes2 = DateDiff("n", d, t2)
diff_seconds1 = DateDiff("s", d, t1)
diff_seconds2 = DateDiff("s", d, t2)

If diff_days1 - diff_days2 > 0 Then
 ReturnValue = 1
 ElseIf diff_days1 - diff_days2 < 0 Then
 ReturnValue = -1
 Else
    If diff_hours1 - diff_hours2 > 0 Then
    ReturnValue = 1
    ElseIf diff_hours1 - diff_hours2 > 0 Then
    ReturnValue = -1
    Else
       If diff_minutes1 - diff_minutes2 > 0 Then
       ReturnValue = 1
       ElseIf diff_minutes1 - diff_minutes2 < 0 Then
       ReturnValue = -1
       Else
          If diff_seconds1 - diff_seconds2 > 0 Then
          ReturnValue = 1
          ElseIf diff_seconds1 - diff_seconds2 < 0 Then
          ReturnValue = -1
          Else
          ReturnValue = 0
          End If
       End If
    End If
End If
Date_Compare = ReturnValue
End Function
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 août 2011 à 03:28
DateDiff : Pourquoi ne fais-tu pas la différence entre tes deux dates plutôt que de bidouiller des tests de jours, heures ... ?
Si tu fais une différence entre tes deux dates, exprimée en secondes :
Si 0
Si < 0
Si > 0
Tu auras là les 3 possibilités = plus simple à traiter

Autre chose : Ton code est, à l'origine, du code VB.Net.
Si tu dois l'utiliser en VB6 (sous réserve de compatibilité), il faut penser aux types de variables.
En VB6, DateDiff renvoie un Long, pas un Integer : Gare aux bugs de dépassement de capacité !
Integer VB.Net --> Long en VB6
Short VB.Net --> Integer en VB6
(pense à regarder dans l'aide)
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 août 2011 à 16:56
Salut
dateInterval est defini comme type string
donc dateInterval.Day est incorrecte
ainsi que
dateInterval.hour etc
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
17 août 2011 à 16:59
Le plus simple c de regarderl'aide de vb
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 août 2011 à 22:37
BL1919 : Dernier rappel : Il est important que tu postes tes messages dans la bonne catégorie.
Tu poses tes questions dans la catégorie VB6 mais tu colles du code VB.Net.
Il est important qu'on sache avec quoi tu travailles, d'une part parce qu'il est primordial de te répondre efficacement, d'autre part pour éviter qu'on perde du temps à te répondre alors que les solutions ne peuvent pas s'appliquer.
Comme toi, on est bénévole ici, alors ne perd pas de temps et n'en fait perdre à personne.
Merci

Autre possibilité : tu n'y connais rien (ce qui n'est pas un problème) et tu colles des bouts de code au hasard dans l'espoir d'avoir du code tout corrigé.
Dans ce cas, n’hésite pas à le dire; on a tous été débutant. Fais des recherches parmi les précédentes questions du forum; charge des applications parmi les sources disponibles sur le site et analyse les méthodes utilisées; fais des essais dans ton coin.
Tu en apprendras plus qu'en comptant toujours sur les autres.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous