Page 1 sur 2
problème de dates

Publié:
27 Juin 2003 à 11:19
par asx9
j'ai deux champs de type "date" que je veux récupérer. je reçoit le message d'erreur suivant: "instance member GETITEMVALUE does not exist"voici mon code:Sub Click(Source As Button) Dim workspace As New NotesUIWorkspace Dim uidoc As NotesUIDocument Set docstat = workspace.CurrentDocument Dim session As New notessession Dim db As notesdatabase Dim vue As notesview Dim doc As notesdocument Dim difference As Long Dim tpsencours As Long Dim tpsvalidé As Long Dim tpsrefusé As Long Dim tpsattente As Long Dim nbreencours As Long Dim nbrevalidé As Long Dim nbrerefusé As Long Dim nbreattente As Long Dim statut As Long Set db = session.currentdatabase Set vue = db.getview("(test)") Set doc = vue.getfirstdocument nbreencours = 0 nbrerefusé = 0 nbrevalidé = 0 nbreattente = 0 nbredoc = 0 Set datedeb = New notesdatetime (docstat.getitemvalue("datedeb")(0)) Set datefin = New notesdatetime (docstat.getitemvalue("datefin")(0)) ce sont ces 2 dernières lignes où il y a un problème.
Re: problème de dates

Publié:
27 Juin 2003 à 11:22
par Raziel
Normalla méthode getitemvalue est une méthode de la classe NotesDocument. Or, ton docstat est de type NotesuidocumentSi tu veux que docstat soit de type notesdocument,remplaceSet docstat = workspace.CurrentDocumentparSet docstat = workspace.CurrentDocument.document
Re: problème de dates

Publié:
27 Juin 2003 à 11:32
par asx9
oui ça marche..... j'ai une autre question, comment fait on pour comparer 2 dates (les dates étant des champs qu'on à relevés):Set datedeb = New notesdatetime (docdate.getitemvalue("datedeb")(0)) Set datefin = New notesdatetime (docdate.getitemvalue("datefin")(0)) While Not doc Is Nothing If (doc.getitemvalue("TypDoc")(0) = "DemandeModificationTiers") Then If Isnumeric (doc.getitemvalue("StatutDemande")(0)) Then statut = doc.getitemvalue("StatutDemande")(0) Set heuredemande = New notesdatetime (doc.getitemvalue("Datedemande")(0)) Set DateAccepteRefuse = New notesdatetime (doc.getitemvalue("DateAccepteRefuse")(0)) If (datedeb >= heuredemande) & (datefin <= DateAccepteRefuse) Thenc'est au "If" que ça bloque (c'est pas très étonnant sinon ça serait trop simple)
Re: problème de dates

Publié:
27 Juin 2003 à 12:48
par asx9
j'ai aussi essayé ça: If (heuredemande.TimeDifference(datedeb) >= 0) & (DateAccepteRefuse.TimeDifference(datefin) >= 0) Thenmais ça ne marche pas non plus
Re: problème de dates

Publié:
27 Juin 2003 à 13:03
par Raziel
SalutEssaie de remplacerSet datedeb = New notesdatetime (docdate.getitemvalue("datedeb")(0))Set datefin = New notesdatetime (docdate.getitemvalue("datefin")(0))Set heuredemande = New notesdatetime (doc.getitemvalue("Datedemande")(0))Set DateAccepteRefuse = New notesdatetime (doc.getitemvalue("DateAccepteRefuse")(0))ParSet datedeb = New notesdatetime (format$(docdate.getitemvalue("datedeb")(0),"dd/mm/yyyy"))Set datefin = New notesdatetime (format$(docdate.getitemvalue("datefin")(0),"dd/mm/yyyy"))Set heuredemande = New notesdatetime (format$(doc.getitemvalue("Datedemande")(0),"dd/mm/yyyy"))Set DateAccepteRefuse = New notesdatetime (format$(doc.getitemvalue("DateAccepteRefuse")(0),"dd/mm/yyyy"))L'utilisation du timedifference est la bonne méthode
Re: problème de dates

Publié:
27 Juin 2003 à 13:11
par asx9
il faut que je mette quoi à la place de "dd/mm/yyyy" car je vais comparer au niveau des heures plus loin dans mon code.je suis sur V4.6 donc je ne sais pas si format$ est bon?
Re: problème de dates

Publié:
27 Juin 2003 à 13:17
par Raziel
D'après l'aide de la V5, format existe en 4.6 (ou du moins, je n'ai pas une nouveauté de la 5)Tu dois mettre littérallement "dd/mm/yyyy" Ceci indique le formatage de la chaine en sortie, à savoir, dans notre cas : 01/01/2003 (par exemple)Maintenant, si tu dois aussi compérer les heures, il faut que tu mette"dd/mm/yyyy hh:nn:ss" Mais attention, car dans ce cas, le timedifférence se fera aussi au niveau des heures:minutes:secondes t non pas au niveau des jours/mois/années
Re: problème de dates

Publié:
27 Juin 2003 à 13:21
par asx9
oui effectivement j'ai vu ça dans l'aide, mais mon code bloque toujours:Set datedeb = New notesdatetime (Format$(docdate.getitemvalue("datedeb")(0),"dd/mm/yyyy")) Set datefin = New notesdatetime (Format$(docdate.getitemvalue("datefin")(0),"dd/mm/yyyy")) 'Set datedeb = New notesdatetime (docdate.getitemvalue("datedeb")(0)) 'Set datefin = New notesdatetime (docdate.getitemvalue("datefin")(0)) While Not doc Is Nothing If (doc.getitemvalue("TypDoc")(0) = "DemandeModificationTiers") Then If Isnumeric (doc.getitemvalue("StatutDemande")(0)) Then statut = doc.getitemvalue("StatutDemande")(0) 'Set heuredemande = New notesdatetime (doc.getitemvalue("Datedemande")(0)) 'Set DateAccepteRefuse = New notesdatetime (doc.getitemvalue("DateAccepteRefuse")(0)) Set heuredemande = New notesdatetime (Format$(doc.getitemvalue("Datedemande")(0),"dd/mm/yyyy")) Set DateAccepteRefuse = New notesdatetime (Format$(doc.getitemvalue("DateAccepteRefuse")(0),"dd/mm/yyyy")) If (heuredemande.TimeDifference(datedeb) >= 0) & (DateAccepteRefuse.TimeDifference(datefin) >= 0) Thenet c'est cette dernière ligne qui n'est pas acceptée.
Re: problème de dates

Publié:
27 Juin 2003 à 13:23
par Raziel
oups, j'avais pas vue avantRemplaceIf (heuredemande.TimeDifference(datedeb) >= 0) & (DateAccepteRefuse.TimeDifference(datefin) >= 0)parIf (heuredemande.TimeDifference(datedeb) >= 0) and (DateAccepteRefuse.TimeDifference(datefin) >= 0)
Re: problème de dates

Publié:
27 Juin 2003 à 13:27
par asx9
YES!!!!!!!!!merci........ c'est dur quand on ne connait pas

Re: problème de dates

Publié:
27 Juin 2003 à 13:29
par Raziel
C'est pour ça que l'on est là...

)Bonne continuation
Re: problème de dates

Publié:
27 Juin 2003 à 13:44
par asx9
si on utilise (dd/mm/yyyy hh:nn:ss) ça permet d'être plus précis?exemple:10/10/2000 12:00:00 et 10/10/2001 12:15:30la différence sera bien 1 an 15 min et 30 secondes, ou simplement 15 min et 30 secondes?
Re: problème de dates

Publié:
27 Juin 2003 à 13:48
par Raziel
Plus tu sera précis avec les param que tu soumet au timedifference, plus le résultat sera fin.Pour info, mais je pense que tu as pu t'en appercevoir, le méthode time différence te retourne le nombre de secondes comprises entre ces deux dates.Dans tons exmple, timedifference te retournera 5430 secondes (si je ne me suis pas planté dans mes calculs)
Re: problème de dates

Publié:
27 Juin 2003 à 13:59
par asx9
pour mes comparatifs il vaut mieux que je fasse plusieurs déclarations telles que:Set datedebSeconde = New notesdatetime (Format$(docdate.getitemvalue("datedeb")(0),"dd/mm/yyyy hh:nn:ss"))Set datedebJour = New notesdatetime (Format$(docdate.getitemvalue("datedeb")(0),"dd/mm/yyyy"))en fait je dois calculer des temps de traitement de certains docs. il faut donc que je vire les heures de la nuit 1h pour le déjeuner les jours ferriers et les week-end.il n'y aurait pas des fonctions pour ça d'ailleurs?
Re: problème de dates

Publié:
27 Juin 2003 à 14:36
par Raziel
S ieffectivement, tu doit parfois faire des calcul sur les heures et d'autres fois sur les jours seulement, faire plusieurs déclarations est une solution.Pour ce qui est des fonctions qui te donne les jours férié, je ne me rappel pas en avoir vu sous notes.Pour ce qui est de savoir si c'est un WE ou non, tu peux tjs utiliser la fonction Weekday (expression) qui te retourne un chiffre compris en 1 et 71 -> Dimanche....7 -> Samedi