Compter le nombre de pièces jointes d'un champ précis

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

Compter le nombre de pièces jointes d'un champ précis

Messagepar mawetter » 20 Avr 2012 à 09:08

Bonjour,
je cherche un moyen de ne compter que le nombre de pièces jointes présentes dans un champ de texte riche particulier.
La commande @Attachments renvoie le nombre de pièces jointes total, mais je souhaiterais compter uniquement le nombre de pièces jointes d'un champ de texte riche particulier.
Je suis en Lotus version 8.5.3.
Je vous remercie d'avance,
mawetter
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 3
Inscrit(e) le : 20 Avr 2012 à 09:01

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar Michael DELIQUE » 20 Avr 2012 à 10:30

Hello et bienvenu

en Formule ce n'est pas faisable, mais en Lotus Script sans problème

un exemple de traitement => viewtopic.php?f=48&t=11940
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar mawetter » 20 Avr 2012 à 10:52

Bonjour,
merci pour votre réponse. Je n'ai encore essayé votre solution, mais j'avais essayé la solution proposée dans la doc officielle.

Code : Tout sélectionner
Dim session As NotesSession
   
   Dim db As NotesDatabase
   
   Dim dc As NotesDocumentCollection
   
   Dim doc As NotesDocument
   
   Dim body As NotesRichTextItem
   
   Dim rtnav As NotesRichTextNavigator
   
   Set session = New NotesSession
   
   Set db = session.CurrentDatabase
   
   Set dc = db.UnprocessedDocuments
   
   Set doc = dc.GetFirstDocument
   
   Set body = doc.GetFirstItem("Body")
   
   Set rtnav = body.CreateNavigator
   
  REM Get count of doclinks
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_DOCLINK)
   
   msg$ = msg$ & "Doclinks:" & Chr(9) & Chr(9) & count% & Chr(10)
   
  REM Get count of file attachments
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_FILEATTACHMENT)
   
   msg$ = msg$ & "File attachments:" & Chr(9) & count% & Chr(10)
   
  REM Get count of embedded objects
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_OLE)
   
   msg$ = msg$ & "Embedded objects:" & Chr(9) & count% & Chr(10)
   
  REM Get count of sections
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_SECTION)
   
   msg$ = msg$ & "Sections:" & Chr(9)  & Chr(9) & count% & Chr(10)
   
  REM Get count of tables
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_TABLE)
   
   msg$ = msg$ & "Tables:" & Chr(9)  & Chr(9) & count% & Chr(10)
   
  REM Get count of tables
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_TABLE)
   
   msg$ = msg$ & "Tables:" & Chr(9)  & Chr(9) & count% & Chr(10)
   
  REM Get count of text paragraphs
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_TEXTPARAGRAPH)
   
   msg$ = msg$ & "Text paragraphs:" & Chr(9)  & count% & Chr(10)
   
  REM Get count of text runs
   
   count% = GetElementCount(rtnav, RTELEM_TYPE_TEXTRUN)
   
   msg$ = msg$ & "Text runs:" & Chr(9)  & Chr(9)  & count% & Chr(10)
   
  REM Display counts
   Messagebox msg$,, doc.Subject(0)


Mais cela ne marche pas. A l'exécution, j'obtiens une erreur : "Variable d'objet non définie". Lorsque je lance le débogueur Lotus, on voit que l'erreur intervient à la ligne "Set body = doc.GetFirstItem("Body") ".
Or, j'ai vérifié, j'ai bien un champ qui s'appelle "Body" dans mon masque.
Je ne sais pas d'où vient l'erreur...
Voici la page de la documentation officielle avec le code complet : http://publib.boulder.ibm.com/infocente ... _CHAP.html
mawetter
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 3
Inscrit(e) le : 20 Avr 2012 à 09:01

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar mawetter » 20 Avr 2012 à 10:54

Je m'aperçois que le lien que j'ai donné ne marche pas à cause des iframe utilisées par IBM (c'est mal les iframes !).

Voici le lien qui marche : http://publib.boulder.ibm.com/infocente ... CRIPT.html
mawetter
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 3
Inscrit(e) le : 20 Avr 2012 à 09:01

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar Michael DELIQUE » 20 Avr 2012 à 11:06

re,

insert une gestion des erreurs tu aurra plus d'info sur ce qui plante et le code "exemple" d'IBM c'est bien pour comprendre comment ça marche, mais en aucun cas a n'utiliser telquel...
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar Michael DELIQUE » 20 Avr 2012 à 11:23

une fonction codé vite fait

ça te renvois une list contenant tout les champs richtext et le nombre de pj dedans

Code : Tout sélectionner
Function DocnbPJ(wDoc As NotesDocument) As Variant
   
   Dim lstRetour List As Integer
   Dim vrItem As Variant
   Dim rtItem As NotesRichTextItem
   Dim Champ As string
   
   On Error GoTo CatchError
   
   lstRetour("DOCNBPJTOTAL") = 0
   
   If wDoc Is Nothing Then
      Error 9999,"wDoc is Nothing"
      Exit function
   End If
   
   vrItem = wDoc.Items
   If IsArray(vrItem) = True Then
      If IsEmpty(vrItem) = False Then
         ForAll Value In vrItem
            If Not Value Is Nothing Then
               If Value.Type = 1 Then
                  Set rtItem = Value
                  Champ = UCase(Trim(rtItem.Name))
                  lstRetour(Champ) = 0
                  ForAll Attachement In rtitem.EmbeddedObjects
                     Select Case Attachement.Type
                     Case 1454, EMBED_ATTACHMENT
                        lstRetour(Champ) = lstRetour(Champ) + 1
                     Case 1453,EMBED_OBJECT
                        REM on fait rien
                     Case 1452, EMBED_OBJECTLINK
                        REM on fait rien
                  End Select
                  End ForAll
                  Set rtItem = Nothing
                  lstRetour("DOCNBPJTOTAL") = lstRetour("DOCNBPJTOTAL")+lstRetour(Champ)
                  Champ = ""
               End If
            End If
         End ForAll
      End If
   End If
   vrItem = null

   DocnbPJ = lstRetour
   Erase lstRetour

   Exit Function
CatchError:
   MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Error " + CStr(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Line # "+Cstr(Erl),16," ERROR !"
   Erase lstRetour
   lstRetour("DOCNBPJTOTAL") = 0
   DocnbPJ = lstRetour
   Erase lstRetour
   Exit Function
End Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar roubech » 20 Avr 2012 à 13:00

tu le lance comment ton code ? à partir d'une vue où tu as sélectionné des docs via un agent ?
tu as vérifié
if not doc is nothing then ...
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Compter le nombre de pièces jointes d'un champ précis

Messagepar LSong » 24 Avr 2012 à 13:57

le code d'ibm est fait pour fonctionner depuis un agent executer sur un document
dans ton cas le doc est vide car il n'y a pas de selection
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france


Retour vers Développement