Page 1 sur 1

doc.getitemvalue

MessagePublié: 24 Juin 2003 à 13:35
par asx9
j'utilise doc.getitemvalue pour récupérer la valeur d'un champ de certain docs de ma base comme cela:doc.getitemvalue("monchamp")(0) <> 160)je pense que ce qui bloque c'est que monchamp est un nombre.quelle pourrait être la solution pour récupérer la valeur de ce champ?

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 14:23
par Raziel
Quel est ton message d'erreur ?Le getitemvalue te retourne le même type de donnée que le champ que tu veux récupéré : s'il est numérique, getitemvalue te retourne du numérique

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 14:24
par Stef
essaie plutot : Cint(doc.monchamp(0)) <> 160si ton champ "monchamp" est numerique.

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 14:56
par asx9
ça ne marche pas il me met toujours: typ mismatch

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:04
par Raziel
Es tu sur que ce champ existe dans ton doc ?Introduit le test suivent dans ton codeif doc.hasitem("monchamp") then....doc.getitemvalue("monchamp")(0) <> 160....end if

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:19
par Sylvain
Dans la doc c'est marqué que pour un champ de type number, getitemvalue te retourne un tableau de double et non pas des int.Dans ce cas le ligne suivante doit faire l'affaire (à tester):doc.getItemValue("monChamp")(0) <> CDbl (160)[%sig%]

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:22
par asx9
en essayant votre code j'ai vu que mon champ n'était pas reconnu!!!!j'ai essayé avec un autre champ qui se trouve juste en-dessous et ça marche. la seule différence entre les deux champs c'est que mon premier est un nombre et l'autre du texte.voivi mon code (le message d'erreur est: type mismatch):Sub Initialize Dim session As New notessession Dim db As notesdatabase Dim vue As notesview Dim doc As notesdocument Dim tpsTraite As NotesDateTime Dim tpsTotal As NotesDateTime Dim difference As Long Dim total As Long Dim nbredoc As Long Set db = session.currentdatabase Set vue = db.getview("(test)") Set doc = vue.getfirstdocument nbredoc = 0 While Not doc Is Nothing If (doc.getitemvalue("TypDoc")(0) = "DemandeModificationTiers") And (doc.getitemvalue("StatutDemande")(0) <> 160) Then Set heuredemande = New notesdatetime (doc.getitemvalue("Datedemande")(0)) Set DateAccepteRefuse = New notesdatetime (doc.getitemvalue("DateAccepteRefuse")(0)) difference = DateAccepteRefuse.TimeDifference(heuredemande) total = total + difference nbredoc = nbredoc + 1 End If Set doc = vue.getnextdocument(doc) Wend total = total/nbredoc Msgbox (total) Msgbox (nbredoc) End Sub

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:28
par Raziel
Qu'entends tu par : "Mon champ n'est pas reconnu" ?Est ce qu'il figure dans ton document. Dans ton masque, de quel neture est ce champ : Modifiable, calculé, calculé à l'affichage, calculé à la création ?

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:37
par asx9
j'ai testé le code que tu m'as donné:if doc.hasitem("monchamp") then....doc.getitemvalue("monchamp")(0) <> 160....end ifc'est comme ça que j'ai vu que mon champ n'était pas reconnuc'est un champ calculé, masqué et c'est un nombremais j'ai testé avec un autre champ quasi identique sauf que c'était un champ texte.le CDbl(160) n'a pas l'air de fonctionner non plus

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:41
par Raziel
Si ça marche avec le if doc.hasitem("monchamp"), cela veux dire que le champ n'existe pas physiquement dans ton doc.Le fait que ce soit un nombre ne change rien.J'aurais compris si ton champ était du type calculé à l'affichage mais comme il est de type calculé....Cela veux peut être dire que ton champ numérique n'existait pas dans le masque au moment où tu as créé ce doc...

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 15:49
par asx9
mon prédécesseur à mis comme valeur au départ: statutdemandecar c'est un champ calculé et il faut mettre quelque chose dans "valeur".ensuite quand l'utilisateur clique sur différents boutons, on y affecte d'autres valeurs (des nombres).et comme ce champ est un nombre et que sa valeur de départ n'en est pas un...... c'est peut-être ça!!!!!!qu'en pensez-vous?

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 16:03
par Raziel
Tu peux essayer d'utiliser la fonction isnumeric afin de tester si la valeur de ton champ est numérique (ou du moins, s'il peut être converti en numérique) ou pas.Le pb c'est que si le hasitem () te retourne false, c'est que ce champ n'existe pas...

Re: doc.getitemvalue

MessagePublié: 24 Juin 2003 à 16:15
par asx9
voici mon nouveau script et il marche (même si les valeur qu'il trouve sont bizarres):Sub Initialize Dim session As New notessession Dim db As notesdatabase Dim vue As notesview Dim doc As notesdocument Dim tpsTraite As NotesDateTime Dim tpsTotal As NotesDateTime Dim difference As Long Dim total As Long Dim nbredoc As Long Set db = session.currentdatabase Set vue = db.getview("(test)") Set doc = vue.getfirstdocument nbredoc = 0 While Not doc Is Nothing If (doc.getitemvalue("TypDoc")(0) = "DemandeModificationTiers") And (doc.getitemvalue("Statutintervention")(0) <> "2") Then If Isnumeric (doc.getitemvalue("StatutDemande")(0)) Then Set heuredemande = New notesdatetime (doc.getitemvalue("Datedemande")(0)) Set DateAccepteRefuse = New notesdatetime (doc.getitemvalue("DateAccepteRefuse")(0)) difference = DateAccepteRefuse.TimeDifference(heuredemande) total = total + difference nbredoc = nbredoc + 1 Else Msgbox ("pb") End If End If Set doc = vue.getnextdocument(doc) Wend total = total/nbredoc Msgbox (total) Msgbox (nbredoc) End Subje n'ai pas une seule fois le message "pb"j'avoue que je n'y comprend rien