Probleme avec un compteur...

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

Probleme avec un compteur...

Messagepar Cédric » 10 Juin 2003 à 12:43

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 !!!
Cédric
 

Re: Probleme avec un compteur...

Messagepar yop » 10 Juin 2003 à 12:59

la meilleure méthode, c'est un compteur qui s'incrémente non pas à l'enregistrement, mais à la création d'un doc.
yop
 

Re: Probleme avec un compteur...

Messagepar Cédric » 10 Juin 2003 à 13:14

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
Cédric
 

Re: Probleme avec un compteur...

Messagepar Raziel » 10 Juin 2003 à 16:58

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

Probleme avec un compteur...

Messagepar Cédric » 12 Juin 2003 à 13:00

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
Cédric
 

Re: Probleme avec un compteur...

Messagepar Raziel » 12 Juin 2003 à 13:04

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.
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: Probleme avec un compteur...

Messagepar Cédric » 13 Juin 2003 à 13:02

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 !!!@+
Cédric
 

Re: Probleme avec un compteur...

Messagepar Domi » 02 Juil 2003 à 15:53

Pourrais tu copier ton code STPMerciDomi
Domi
 

Re: Probleme avec un compteur...

Messagepar Raziel » 02 Juil 2003 à 16:10

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


Retour vers Développement