incrémenter un compteur à partir du Webb

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

incrémenter un compteur à partir du Webb

Messagepar Haig » 19 Juin 2003 à 11:33

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
Haig
 

Re: incrémenter un compteur à partir du Webb

Messagepar Raziel » 19 Juin 2003 à 11:48

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
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: incrémenter un compteur à partir du Webb

Messagepar yop » 19 Juin 2003 à 11:56

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.
yop
 

Re: incrémenter un compteur à partir du Webb

Messagepar Haig » 23 Juin 2003 à 15:46

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
Haig
 

Re: incrémenter un compteur à partir du Webb

Messagepar Raziel » 23 Juin 2003 à 16:19

Salut,Je ne vois pas une ligne du typedoc.save true, trueEst ce normal ? :-))
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: incrémenter un compteur à partir du Webb

Messagepar Haig » 26 Juin 2003 à 10:24

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...
Haig
 

Re: incrémenter un compteur à partir du Webb

Messagepar polo » 26 Juin 2003 à 13:19

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)
polo
 

Re: incrémenter un compteur à partir du Webb

Messagepar Haig » 26 Juin 2003 à 16:21

Merci beaucoup, ca marche. Ouf...
Haig
 


Retour vers Développement