problème de dates

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

problème de dates

Messagepar asx9 » 27 Juin 2003 à 11:19

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.
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 11:22

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 11:32

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)
asx9
 

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 12:48

j'ai aussi essayé ça: If (heuredemande.TimeDifference(datedeb) >= 0) & (DateAccepteRefuse.TimeDifference(datefin) >= 0) Thenmais ça ne marche pas non plus
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 13:03

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 13:11

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?
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 13:17

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 13:21

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.
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 13:23

oups, j'avais pas vue avantRemplaceIf (heuredemande.TimeDifference(datedeb) >= 0) & (DateAccepteRefuse.TimeDifference(datefin) >= 0)parIf (heuredemande.TimeDifference(datedeb) >= 0) and (DateAccepteRefuse.TimeDifference(datefin) >= 0)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 13:27

YES!!!!!!!!!merci........ c'est dur quand on ne connait pas ;-)
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 13:29

C'est pour ça que l'on est là... :-))Bonne continuation
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 13:44

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?
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 13:48

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)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: problème de dates

Messagepar asx9 » 27 Juin 2003 à 13:59

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?
asx9
 

Re: problème de dates

Messagepar Raziel » 27 Juin 2003 à 14:36

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Suivant

Retour vers Développement