Page 1 sur 1

Probleme avec un compteur...

MessagePublié: 10 Juin 2003 à 12:43
par Cédric
J'ai un problème avec un compteur.En effet, dans un document, j'affiche mon compteur, contenu dans un document profil.Cette variable du docProfil est mise à jour à chaque nouvel enregistrement. Or lorsque plusieurs utilisateurs enregistrent un doc (different) en même temps, la variable n'est mise à jour qu'une seule fois, ce qui fausse tout :(J'aurais donc voulu savoir savoir si ma methode du doc profil était adaptée et si oui comment améliorer cette gestion des acces concurrents.Merci pour toute l'aide que vous voudrez bien m'apporter !!!

Re: Probleme avec un compteur...

MessagePublié: 10 Juin 2003 à 12:59
par yop
la meilleure méthode, c'est un compteur qui s'incrémente non pas à l'enregistrement, mais à la création d'un doc.

Re: Probleme avec un compteur...

MessagePublié: 10 Juin 2003 à 13:14
par Cédric
OK mais dans ce cas s'il l'utilisateur annule sa manip (ferme sans enregistrer par exemple) mon compteur est quand meme incrementer, ce qui me gene un peu...Sinon en fouillant un peu dans le forum j'ai vu cette ligne de code a propos d'un doc profil :==> DocProfil.IsLooked = "1"Explications possibles...Merci

Re: Probleme avec un compteur...

MessagePublié: 10 Juin 2003 à 16:58
par Raziel
Salut Cédric,Il me semble que c'est moi qui ai posté la solution du :DocProfil.IsLooked = "1"En quelques mots, voici comment elle fonctionne.Tu créé un doc de profil dans lequel tu créé deux champs : Compteur et IsLocked.Lors de l'enregistrement du doc auquel tu veux appliqué un compteur, tu récupère le doc de profil en vérifiant, au préalable, que IsLocked = "0". Si c'est le cas tu passe IsLocked à "1" (ce qui empêche quelqu'un d'autre d'accéder au doc), tu sauvegarde le doc de profil, tu incrémente ton compteur, tu repasse IsLocked à "0", tu sauvegarde ton doc de profil.Voilà, si tu veux plus d'infos, n'hésite pas.Raziel

Probleme avec un compteur...

MessagePublié: 12 Juin 2003 à 13:00
par Cédric
Je suis OK sur le principe.Or mon appli a quasiment une centaine d'utilisateurs qui se connectent toujours a la même heure de la journée.J'ai effectué le test avec ta petite astuce du champs "isLocked" mais j'ai encore eu le cas (beaucoup moins souvent il est vrai) de deux personnes qui clickent sur le bouton "enregistrer" du masque en même temps.Donc si tu a encore d'autres astuces pour limiter encore un peu plus, je suis preneur .... ;.)Et merci

Re: Probleme avec un compteur...

MessagePublié: 12 Juin 2003 à 13:04
par Raziel
Tu peux essayé de passer par la classe notesTimer afin de mettre en place une tempo.Tu peux aussi essayé de passer par un sleep(Nombre de secondes as float) et tu initialise ton "Nombre de secondes" grace à un randomize.

Re: Probleme avec un compteur...

MessagePublié: 13 Juin 2003 à 13:02
par Cédric
Donc on a fait comme tu nous l'as conseillé et là, avec un sleep, même en voulant le provoquer, plus de problème (OUF !!!). Mais on a fait ce test simplement sur 2 stations, apres faudra voir sur la centaine de client. Et la si ca se reproduit sachez que je n'hesiterais pas a faire appel a vos bons et loyaux services...Et merci encore !!!@+

Re: Probleme avec un compteur...

MessagePublié: 02 Juil 2003 à 15:53
par Domi
Pourrais tu copier ton code STPMerciDomi

Re: Probleme avec un compteur...

MessagePublié: 02 Juil 2003 à 16:10
par Raziel
Je pense que le code final doit ressembler à un truc du genredim session as new notessessiondim db as notesdatabaseDim DocProfil as notesdocumentdim LastCompteur as integerset db = session.currentdatabaseset DocProfil = db.getprofiledocument("Compteur")While DocProfil.getitemvalue("IsLooked")(0) = "1"RandomizeSleep (Rnd(0))Wend' Mise à jour du doc de profil afin de le vérrouillerDocProfil.IsLooked = "1"DocProfil.save True, True' Je récupère le num du dernier compteurLastCompteur = DocProfil.getitemvalue("NumCompteur")(0)LastCompteur = LastCompteur + 1' On met à jour le numéro du dernier compteur dans le doc de profilDocProfil.NumCompteur = LastCompteur' On libère le document de profilDocProfil.IsLooked = "0"DocProfil.save True, True