comparaison de dates en LS

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

comparaison de dates en LS

Messagepar lemm » 02 Fév 2004 à 11:23

Salut à tous.j'ai des dates d'échéances dans des docs. je dois tester chaque jour (un agent LS qui passe) les échéances qui tombent dans 7 jours.Si je suis le help designer sur la question, y'a que "timedifference" pour m'aider...Dim dateTime As NotesDateTimeDim dateEcheance As NotesDateTime Set dateTime = New NotesDateTime("")Call dateTime.SetNow ' <- après avoir essayé le "Set" avec ("Today") !Set dateEcheance = New NotesDateTime(doc.DateEcheance(0))Call dateTime.AdjustDay(-7)If dateTime.TimeDifference( dateEcheance ) > 0 Then Call message_avis_echeance(dbNames,dbCurrent,dPer)End If- Je suis pas convaincu par ce script....Si ma date d'échéance est infèrieure à ma date du jour -7, timedifférence me renverra bien zéro ?? Quid si je passe une date "31/01/04" au lieu de "31/01/2004" (j'ai le cas et je pense que ça plante) . ça serait plus simple si on pouvait comparer les dates : if date1 > date2 par exemple... enfin je sais bien que c'est beaucoup demander...
lemm
 

Re: comparaison de dates en LS

Messagepar Rom1 » 02 Fév 2004 à 11:59

Tu es sur que ça plante ?Sinon, tu peux aussi faire :Const CI_NB_SECONDES_PAR_JOUR = 86400If dateEcheance.TimeDifference( dateTime ) > 7 * CI_NB_SECONDES_PAR_JOUR ThenCall message_avis_echeance(dbNames,dbCurrent,dPer)End Ifça évite la ajustDayRom1.
Rom1
 

Re: comparaison de dates en LS

Messagepar Teamlogeur » 02 Fév 2004 à 14:05

Je suis pas un spécialiste du LS mais dans mes agents LSil me semble j'ai déjà utilisé :If (Cdat(doc.W_DATE(0))<(Date-7)) Then ....End IfA tester
Teamlogeur
 

Re: comparaison de dates en LS

Messagepar lemm » 02 Fév 2004 à 14:23

Merci pour vos conseils (effectivement ça ne plante pas) mais...1) J'admet pas que du code me contraigne à faire ce que je veux pas faire.2) je VEUX tester "date1 < date2" parceque je trouve que c'est plus simple (pour mon petit esprit).3) mon script était particulièrement faux pour ce que je voulais faire !donc je me suis résolu :- je passe par un bon vieux "format()" qui me fait du 02/02/2004 sous forme "20040202"- je continue à passer par un NotesDateTime pour utiliser le Adjust pour calculer un nombre de jours en plus bien comme il faut ( j'ai pas encore essayé (Date-7) de TeamLogeur, mais c'est vrai que ça simplifierait si ça marchait ) - je peux tester si DateEcheance est comprise entre J et J+15 (ce qui correspond plus à ce que je dois faire) : Dim dateJ As NotesDateTime Dim dateJ00 As String Dim dateJ15 As String Dim dateEch As String Set dateJ = New NotesDateTime("") Call dateJ.SetNow Call dateJ.AdjustDay(15) ' je récupère via NotesMachin pour faire Adjust +15 qui va bien... dateJ15 = Format(dateJ.dateonly,"yyyymmdd") ' là j'ai bien ma date au format 20040217 pour 02/02/2004 + 15 J dateJ00 = Format(Date(),"yyyymmdd") ' là j'ai ma date jour au format 20040202 If Isdate(doc.DateEcheance(0)) Then dateEch = Format(doc.DateEcheance(0),"yyyymmdd") ' là j'ai ma date echéance au meme format aaaammjj If dateEch > dateJ00 Then ' ensuite là c'est du brutal : aaaammjj > 20040202 ? If dateEch < dateJ15 Then ' et puis encore un autre : aaaammjj < 20040217 ? Call msg_avis_echeance(dbNames,dbCurrent,dPer) End If Else If dateEch = dateJ00 then msgbox ("Dernier jour les Gars !") Else Msgbox ("Arrrgh ! Trop Tard!") ' Bon, j'admet...c'est pas dans l'agent... End If End If End IfVoilà. Le concours est ouvert pour vos solutions et vos remarques (Pax Oguruma, Pax... ;-)) à toi... )
lemm
 

Re: comparaison de dates en LS

Messagepar Droad » 03 Fév 2004 à 12:01

Au plus simple:Dim ech As Variantech = doc.DateEcheance(0) 'Champ date, avec 'Afficher l'heure' décochéeIf Isdate(ech) Then Dim auj As Variant auj = Today If auj = ech Then Msgbox ("Dernier jour les Gars !") Else If auj>ech Then Msgbox ("Arrrgh ! Trop Tard!") Else If ech < auj+15 Then Msgbox ("Avis d'échéance") End If End If End If End If[%sig%]
Droad
 


Retour vers Développement

cron