Page 1 sur 2

Client Notes qui se plante pendant un agent

MessagePublié: 11 Mars 2010 à 09:35
par mike76
Bonjour,

Pour un client j'ai fait un morceau de code qui permet de déchiffrer les mails.
Ca fonctionne pas mal, sauf qu'à un moment s'il y a trop de mails le client Notes plante.
J'ai esssayé de mettre un YIELD dans ma boucle, mais toujours idem.
Auriez-vous une idée comme faire pour que le client ne plante pas ???

Code : Tout sélectionner
Dim ws As New NotesUIWorkspace
       Dim uidoc As NotesUIDocument
       Dim session As New NotesSession
       Dim db As NotesDatabase
       Dim view As NotesView
       Dim doc As NotesDocument
       Dim docCourant As NotesDocument
       Dim i As Integer
       Dim j As Integer
       
       i=0
       Set db=session.CurrentDatabase
       
       Set view=db.GetView("($all)")
       j=view.EntryCount
       
       view.AutoUpdate=False
       Set doc=view.GetFirstDocument
       While Not (doc Is Nothing)
               If doc.HasItem("Encrypt") Then
                       If doc.GetItemValue("Encrypt")(0)="1" Then
                               Set uidoc=ws.EditDocument(True,doc)
                               Set docCourant=uidoc.Document
                               Call docCourant.RemoveItem("Encrypt")
                               Call docCourant.Replaceitemvalue("ActionInProgress","4096")
                               Call uidoc.Save
                               Call docCourant.Save(True,False)
                               Call uidoc.Close(True)
                               YIELD
                               i=i+1
                               Print i
                       End If
               End If
               j=j-1
               Print "Il reste " & j & " mails à traiter. " & i & " ont été déchiffrés"
               Set doc=view.GetNextDocument(doc)
       Wend
       view.AutoUpdate=True

MessagePublié: 11 Mars 2010 à 09:42
par stloje
C'est peut-être du à un trop grand nombre de UIDoc ouvert dans l'espace de travail. Tu as besoin de travailler avec le Front End?

Je me souvient qu'il y a un "post" où une personne avait des soucis d'exécution d'agent à cause d'un grand nombre de documents Front End ouvert. Je vais chercher le lien.

MessagePublié: 11 Mars 2010 à 09:43
par mike76
salut,

merci pour ton aide
oui j'ai besoin d'ouvrir le doc en front end car pour moi c'est le seul moyen pour déchiffrer un mail
si tu retrouves ton lien ça serait cool
merci d'avance

MessagePublié: 11 Mars 2010 à 10:10
par stloje
J'ai perdu toute ma réponse parce qu'il a fallut que je me reconnecte!!! Grr!

Bon, je me demandais pourquoi tu passes du back-end au front-end pour ensuite revenir sur un autre back-end qui pointe déjà sur le premier, faire les modifs en front et back-end et exécuter une sauvegarde sur les deux niveaux?

Ca aurait pas été plus simple de faire les modifs en back-end et exécuter un ComputeWithForm par la suite?

MessagePublié: 11 Mars 2010 à 10:25
par mike76
oui mais en back-end, il n'y a pas de déchiffrage du mail
il se fait uniquement en front-end
c'est pour ça que j'utilise du front

MessagePublié: 11 Mars 2010 à 10:31
par stloje
Je pense que je viens de comprendre. Tu parles du chiffrement des données?

MessagePublié: 11 Mars 2010 à 10:31
par Michael DELIQUE
tu peux pas faire un changement de form tamporaire qui aurrais un close dans le postopen ?

MessagePublié: 11 Mars 2010 à 10:36
par mike76
@stolje :
Oui c'est bien ça le but est de déchiffré les mails de chaque utilisateur

@Michaël :
je ne comprends pas trop ce que tu veux me dire
en fait, le but de mon agent qui est installé sur chaque base courrier (qui en ont besoin) est de déchiffrer l'ensemble des mails d'une base courrier

MessagePublié: 11 Mars 2010 à 10:43
par stloje
Je viens de me souvenir de la partie de réponse qui me manquait, avant déconnexion.

Bon, oui, j'ai retrouvé le lien, mais tu appliques déjà la solution : le Yield et l'option true du uiDoc.Close (true)

MessagePublié: 11 Mars 2010 à 11:54
par mike76
et ouais je pensais que ça suffisait, dommage

MessagePublié: 11 Mars 2010 à 12:27
par Michael DELIQUE
et bien si le traitement est trop long

peut etre peut tu l'accelerer en forcement la fermeture (le save) du document a sont ouverture dans le postopen du masque

c'est une technique que 'jutilise pour l'impression d'un doc avec un masque dédié.

MessagePublié: 11 Mars 2010 à 13:56
par stloje
Michael DELIQUE a écrit:tu peux pas faire un changement de form tamporaire qui aurrais un close dans le postopen ?


L'idée semble bonne. En créant un masque temporaire, tu n'es plus dépendant des événements du masque, du coup il est plus rapide à fermer.

Sinon, tu as essayé de mettre un sleep pour forcer Notes à ralentir, le temps qu'il ferme les uiDoc?

MessagePublié: 11 Mars 2010 à 15:08
par mike76
pas bête l'idée Michaël
je vais tester le sleep de stloje pour commencer qui me fera faire moins de modif dans mon code, sinon après je prendrais ton idée Michaël
je vous tiens au courant

MessagePublié: 11 Mars 2010 à 17:06
par mike76
pour le sleep c'est mort, ça plante toujours

Michaël,
Comment tu fais en ls pour ouvrir un document avec un autre masque ??
en formule je sais faire @Command([ViewSwitchForm]) mais pas d'équivalent en ls

merci d'avance

MessagePublié: 11 Mars 2010 à 17:08
par Michael DELIQUE
salut

soit avant l'édition (Set uidoc=ws.EditDocument(True,doc) ) tu change le nom du form

soit tu passe par notesuiworkspace.dialogbox