doc.getitemvalue

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

doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 13:35

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

Re: doc.getitemvalue

Messagepar Raziel » 24 Juin 2003 à 14:23

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
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: doc.getitemvalue

Messagepar Stef » 24 Juin 2003 à 14:24

essaie plutot : Cint(doc.monchamp(0)) <> 160si ton champ "monchamp" est numerique.
Stef
 

Re: doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 14:56

ça ne marche pas il me met toujours: typ mismatch
asx9
 

Re: doc.getitemvalue

Messagepar Raziel » 24 Juin 2003 à 15:04

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
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: doc.getitemvalue

Messagepar Sylvain » 24 Juin 2003 à 15:19

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%]
Avatar de l’utilisateur
Sylvain
Maître-posteur
Maître-posteur
 
Message(s) : 473
Inscrit(e) le : 16 Déc 2004 à 00:20
Localisation : Rennes

Re: doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 15:22

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
asx9
 

Re: doc.getitemvalue

Messagepar Raziel » 24 Juin 2003 à 15:28

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 ?
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: doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 15:37

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
asx9
 

Re: doc.getitemvalue

Messagepar Raziel » 24 Juin 2003 à 15:41

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...
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: doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 15:49

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

Re: doc.getitemvalue

Messagepar Raziel » 24 Juin 2003 à 16:03

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...
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: doc.getitemvalue

Messagepar asx9 » 24 Juin 2003 à 16:15

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
asx9
 


Retour vers Développement