Page 1 sur 1

incrémenter un compteur à partir du Webb

MessagePublié: 19 Juin 2003 à 11:33
par Haig
Bonjour,J'ai un script lotus dans un masque qui se lance sur Querysave, ce script permet d'incrémenter un compteur, et, il fonctionne si je crée un document à partir d'un client Lotus mais pas si j'utilise un navigateur Web.Dois-je utiliser Querrywebsave et un agent ? Si oui comment?Merci.Pour info voici le script en question:Sub Querysave(Source As Notesuidocument, Continue As Variant) Dim doc As NotesDocument Dim Session As New notessession Dim db As notesdatabase Dim DocProfil As notesdocument Dim Numindex As Integer Dim Numanomalie As Integer If Not (Source.IsNewDoc) Then Exit Sub Set doc=Source.document Set db = Session.currentdatabase Set DocProfil = db.getprofiledocument("Index") While DocProfil.getitemvalue("Islocked")(0) = "1" Sleep(1) Wend DocProfil.Islocked ="1" DocProfil.save True, True Numindex = DocProfil.getitemvalue("Numindex")(0) Numindex = Numindex + 1 DocProfil.Numindex = Numindex Doc.Numanomalie = Numindex DocProfil.IsLocked ="0" DocProfil.save True, True End Sub

Re: incrémenter un compteur à partir du Webb

MessagePublié: 19 Juin 2003 à 11:48
par Raziel
Tu peux utiliser un agent lancé par le WebQuerySave.Tu place ton code dans 1 agent qui peu aussi bien tourner pour notes que le web.Dans le querysave de ton masque, tu fais appel à cet agent.Avantage : c'est le même code qui est utilisé pour Notes et pour le web.Il faut juste que tu modifie ton code de sorte de ne plus passer par la notesuidocument mais par le DocumentContext de la classe Notessession

Re: incrémenter un compteur à partir du Webb

MessagePublié: 19 Juin 2003 à 11:56
par yop
dim session as new notessessiondim doc as notesdocumentset doc = session.documentcontextça te permettra d'accéder aux propriétés et méthodes de ton doc.

Re: incrémenter un compteur à partir du Webb

MessagePublié: 23 Juin 2003 à 15:46
par Haig
Merci pour vos réponses.J'ai modifié mon script et je le lance à partir d'un agent.Le champ Numindex de mon doc profile s'incrémente bien, par contre le champ Numanomalie de mon doc n'est pas mise à jour.Pourriez-vous me dire pourquoi.Merci d'avance.Voici mon script :Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim DocProfil As NotesDocument Dim Num As Integer Dim Numindex As Integer Set doc = session.DocumentContext Set db = session.CurrentDatabase Num = doc.getitemvalue("Numanomalie")(0) If Not (Num =0) Then Exit Sub Set DocProfil = db.getprofiledocument("Index") While DocProfil.getitemvalue("Islocked")(0) = "1" Sleep(1) Wend DocProfil.Islocked ="1" DocProfil.save True, True Numindex = DocProfil.getitemvalue("Numindex")(0) Numindex = Numindex + 1 DocProfil.Numindex = Numindex doc.Numanomalie = Numindex DocProfil.IsLocked ="0" DocProfil.save True, True End Sub

Re: incrémenter un compteur à partir du Webb

MessagePublié: 23 Juin 2003 à 16:19
par Raziel
Salut,Je ne vois pas une ligne du typedoc.save true, trueEst ce normal ? :-))

Re: incrémenter un compteur à partir du Webb

MessagePublié: 26 Juin 2003 à 10:24
par Haig
Merci,Bon finalement, Ca marche mieux si je sauvegarde mon doc.Par contre :si je lance mon agent manuellement, ca marche.S'il est lancé sur Querysave : ca ne marche pas, le compteur du doc profil est bien incrémenté, mais le champ de mon document n'est pas mis à jour ?Sur WebQuerysave l'agent fonctionne.Finalement, j'utilise maintenant deux scripts différents :sur querysave, je passe par Notesuidocument et sur sur WebQuerysave je passe par DocumentContext.Donc tout fonctionne bien...Sauf que si un utilisateur crée un doc, par la suite - et tant qu'il ne ferme pas la base - il ne récupère pas la valeur réelle du compteur du doc profil, mais une valeur qui semble être sauvegardé en mémoire cache.Y a t'il un moyen pour éviter ce problème ?PS : je trouve que la gestion d'un compteur est bien compliquée...

Re: incrémenter un compteur à partir du Webb

MessagePublié: 26 Juin 2003 à 13:19
par polo
En utilisant un document non profile, je sais que ca fonctionne très bien,mais il faut modifier une bonne partie de ton code..code à écrire :'// créer le documentdoc = NotesDatabase.CreateDocument()doc.form="Index"doc.compteur = un_nombrecall doc.save();pour aller le chercher, je te conseille de créer une vue contenant ton(s )compteur(s) et utiliser le doc= NotesView.getDocumentByKey([clé],true)

Re: incrémenter un compteur à partir du Webb

MessagePublié: 26 Juin 2003 à 16:21
par Haig
Merci beaucoup, ca marche. Ouf...