[ Resolu ] : Problème de boucle lors d'un mailing

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

[ Resolu ] : Problème de boucle lors d'un mailing

Messagepar Thelonious » 09 Mars 2011 à 19:08

Bonjour,

J'ai créé un agent qui envoie un mail à partir de documents stockés dans une vue. Chaque document peut avoir de 1 à n destinataires.

Voici le code :
Code : Tout sélectionner
Sub Initialize
   '===========================================================================
   ' EnvoiQuestion
   ' Envoi des mails créés avec le masque Question
   '===========================================================================
   
   ' =============================================================
   ' = Déclaration des variables
   ' =============================================================
   
   Dim Session As NotesSession
   Dim db As NotesDatabase
   Dim Vue As NotesView
   Dim entry As NotesViewEntry
   Dim doc As NotesDocument
   Dim docProc As NotesDocument
   Dim counter As Integer   
   Dim DebAg As String
   Dim Destinataires_Mail As Integer
   
   Set Session = New NotesSession
   Set db = Session.CurrentDatabase
   
   DebAg="Ma Base - EnvoiQuestion : "   
   Print DebAg"Début Agent"
   
   ' =============================================================
   ' = Envoi des mails
   ' =============================================================
   
   Set Vue = db.GetView("vwMail_Confirm")    ' Vue des nouvelles questions à prendre en compte
   Set doc = Vue.GetFirstDocument
   
   '=============================================================
   ' = Vérification : Si la vue vwMail_Confirm est vide =  PAS DE TRAITEMENT
   ' =                        Sinon on continue
   ' =============================================================
   Dim vc As NotesViewEntryCollection
   Set vc = Vue.GetAllEntriesByKey("Question")
   Print DebAg"Nombre de questions à envoyer = " vc.Count
   ' La vue correspond aux mails a envoyer
   If vc.Count = 0 Then
      Print DebAg"Il n'y a aucun document dans la vue ... Pas d'envoi de mails"
      Goto sortie
   Else
      
      
      While Not(doc Is Nothing)   
                  
         Envoi_Mail=False      
         
         Dim Compteur As Integer
         Dim ValeurFin As Integer
                     ' Permet d'envoyer des mails quelque soit le nombre de destinataires remontés      
         ValeurFin = doc.NbreDest(0) - 1
         Print DebAg" Valeur fin calculée ( pour la boucle de choix des destinataires ) = "ValeurFin
         For Compteur = 0 To ValeurFin
            Print DebAg" Envoi du mail n° "Compteur" pour le destinataire "doc.Destinataires(Compteur)      
            
            Set docMemo = New NotesDocument(db)
            
            docMemo.Form = "Memo"         
            docMemo.Subject="Vous avez reçu la question '" & doc.Subject(0) & "'"
            docMemo.SendTo = doc.Destinataires(Compteur)
            
            Set rtitem = New NotesRichTextItem( docMemo, "Body" )
            Call rtitem.AppendText( "Bonjour,")
            Call rtitem.AddNewLine(2)               
            Call rtitem.AppendText( "Vous avez reçu la question '" & doc.Subject(0) & "'sur notre forum." )
            Call rtitem.AddNewLine(1)      
            Call rtitem.AppendText( "Merci d'apporter une réponse au plus tot." )      
            Call rtitem.AddNewLine(2)
            Call rtitem.AppendText( "Vous pouvez accéder au document en cliquant ici:  " )            
            Call rtitem.AppendDocLink( doc, db.Title )
            Call rtitem.AddNewLine(2)
            Call rtitem.AppendText( "Ceci est une notification automatique." )      
            
            Call docMemo.Send( False )
            
            Envoi_Mail=True
            
         Next ' Fin de la boucle pour les envois de mails multi-destinataires
         
         doc.FLAG="OUI"
         doc.Save True, True   
         
         Set doc = Vue.GetNextDocument(doc)
         
      Wend
   End If
      
   
sortie:
   
   Print DebAg"Fin Agent"
   
End Sub


Et voici mon problème :

Si par exemple j'ai 3 documents dans ma vue, l'agent est sensé envoyer au moins un mail par document.

Or, seul le premier document de la vue est traité.
Les mails sont envoyés tout à fait normalement.

Voici ma vue après l'envoi du premier message ( il en reste donc 2 sur 3 ) :

Image

La vue est catégorisée et triée seulement sur la première colonne ( Enseigne )

Dès que la boucle passe au deuxième document, l'agent plante avec le message suivant :
Entry not found in index

Le problème se situe au niveau du Set doc = Vue.GetNextDocument(doc)

Je n'arrive pas à comprendre ce qui cloche ...
Est-ce quelqu'un peut m'aider ?

D'avance, merci ! :D
Dernière édition par Thelonious le 10 Mars 2011 à 11:16, édité 1 fois.
Avatar de l’utilisateur
Thelonious
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 106
Inscrit(e) le : 16 Déc 2004 à 11:58
Localisation : Région Parisienne

Messagepar Michael DELIQUE » 10 Mars 2011 à 09:43

salut

tu save ton doc dans la boucle donc la vue doit être rafraichie

met un autoupdate = false avant
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

Messagepar Michel Nico » 10 Mars 2011 à 10:07

ou alors


set docToSave = doc
Set doc = Vue.GetNextDocument(doc)
docToSave.save True, True
Michel Nico
Posteur néophyte
Posteur néophyte
 
Message(s) : 60
Inscrit(e) le : 18 Jan 2011 à 17:19
Localisation : Toulouse

Messagepar Michael DELIQUE » 10 Mars 2011 à 10:17

ouaip !
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

Messagepar Thelonious » 10 Mars 2011 à 11:15

Merci Michael !
Effectivement, ça marche impec' !
Avatar de l’utilisateur
Thelonious
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 106
Inscrit(e) le : 16 Déc 2004 à 11:58
Localisation : Région Parisienne


Retour vers Développement