Page 1 sur 1

Pb synchronisation base lotus réplication

MessagePublié: 23 Juin 2010 à 13:13
par madani
Bonjour, et merci d'avance

je dois créer une base qui a un masque et dans ce masque plusieurs personnes différentes interviennent sur un bouton et des champs.

Le problème est que chaque personne doivent renseigner les mêmes champs et vont recevoir en même temps le mail donc interviennent en même temps sur le masque risque alors de réplication de masque.

Comment éviter ceci en sachant que je dois envoyer un mails pour les avertirs à 30 personnes différentes.

J'avais penser a un mail toutes les heures le souci est toujours le problème d'ouvrir en même temps la base en modifier.


Existe t-il en lotuscript la possibilité de savoir si le masque est déja ouvert par une personne ? Je pense au queryopen ??

Si quelqu'un a une autre idée je suis preneur ??? merci

Merci avance mais je pense que je suis pas le seul a avoir ce problème.

MessagePublié: 23 Juin 2010 à 13:20
par LSong
lotus contient un systeme de lock sur les documents a partir de la version 6

regarde a NotesDocument.lock() et unlock()
ca crée un lock sur le document sur la replique maitre

MessagePublié: 23 Juin 2010 à 13:29
par madani
Merci je vais regarder

MessagePublié: 23 Juin 2010 à 13:35
par madani
tu l'as déjà tester ?

MessagePublié: 23 Juin 2010 à 15:15
par LSong
oui il faut parametrer ou se trouve la replication maitre

ca marche sur les replication mais pas les local (il doit accéder a la replication maitre pour savoir si le doc est locker ou pas)

MessagePublié: 23 Juin 2010 à 15:38
par madani
Franchement c'est complex car la j'ai une base sur mon serveur j'ai essayé de tester locker ou non le problème est qu'une fois sur 2 en lotuscript il me met non locké ou locké alors que je suis deçu si tu as un bout de code qui pourrait m'éclaire en lotus ou formule .


je me sert de se bout de code mais j'ai pas trop compris en même temps sa fait 6 semaines que j'ai pas fait du lotuscript je suis en alternance je faisais du jsp java avant rien a voir mdr mais bref la n'est pas le sujet:

Sub Initialize
Dim Sess As New NotesSession
Dim Doc As NotesDocument
Dim Count As NotesItem
Dim Status As Integer
Dim LockID As Integer
Dim others As Integer

' Creating a Lock ID or getting the Lock ID
' For the event of "WebSiteHits"
LockID = Createlock("WebSiteHits")

' Infinite loop that can only be exited
' when this agent has a successfull
' lock. An unsuccessfull lock means
' that this agent is presently being
' run by someone else.
Do While True
If Codelock(LockID) Then
Exit Do ' We finally have a lock, exiting Loop
End If
Loop

Set Doc = Sess.SavedData

Set count = Doc.GetFirstItem("WebHits")
If count Is Nothing Then
Set count = New NotesItem(Doc, "WebHits", 0)
End If

count.Values = count.Values(0) + 1

Call Doc.Save(True,False)

' Once completed, release and
' destroy this lock so another
' run of this agent can continue.
Status = CodeUnlock(LockID)
Status = DestroyLock(LockID)

End Sub[color=green]
[/color]

Merci de ton aide

MessagePublié: 23 Juin 2010 à 15:49
par roubech
pour utiliser le lock native de Notes, il faut cocher l'option correspondante dans les propriétés de la base
Ensuite, normalement ça le fait tout seul : quand un user ouvre un doc en Edit, ça ajoute des champs $Writers et $WriterDate et quand il ferme son docs, ça les enlève. Si entre temps un autre user essaye de passer le doc en Edit, il a une popup indiquant que le doc est déjà ouvert en edit par untel
par contre, si tu as des agents qui modifie les doc en backend, il faut utiliser la propriété LS pour savoir si le doc est ouvert par quelqu'un

MessagePublié: 23 Juin 2010 à 15:53
par madani
ok merci a je comprend mieux

MessagePublié: 23 Juin 2010 à 15:57
par madani
l'option c'est celle ci ?

MessagePublié: 23 Juin 2010 à 16:09
par madani
c'est bon merci sa marche