Page 1 sur 2

compteur

MessagePublié: 30 Avr 2003 à 14:34
par debutant
Comment créer un champ compteur qui s'incremente à chaque création d'un nouveau docs?

Re: compteur

MessagePublié: 01 Mai 2003 à 08:25
par PIERRE MOYSAN
Plusieurs possibilités :1.Une variable dans le notes.ini incrémentée à chaque enregistrement de document.Fonctions @setenvironment, @environment ou mot clé ENVIRONMENT : = valeurtexteducompteur.Attention, le notes.ini est celui de l'utilisateur. Un agent exécuté sur serveur permettrait de modifier le notes.ini du serveur2. Un masque de profil avec un champ numéro de compteur correspondant au dernier numéro pris.Dans le document à incrémenter :@getprofilefield pour récupérer la valeur courante du compteur afin de l'incrémenter@setprofilefield pour mettre à jour le compteur dans le masque de profil lors de l'enregistrement par exemple.3.Plus gourmand en ressources (index):Une vue affichant les numéros de compteur des documents dans une colonne@dbcolumn pour récupérer la plus grande valeur de compteur puis incrémentation +1 à l'enregistrement.Il y a encore d'autres possibilités, mais celles-ci sont assez simples. La deuxième solution est certainement la plus pratique. Attention cependant à gérer également un système de verrou pour éviter deux enregistrements simultanés et l'affectatin du même numéro de compteur à deux documents.Pierre MOYSANp.moysan@wanadoo.frhttp://pierremoysan.domino-technet.com

Re: compteur

MessagePublié: 02 Mai 2003 à 13:35
par Raziel
Salut,La méthode avec le notes.ini me semble extrèmement litigieuse et assez compliqué à mettre en place (notamment sur le fait d'assurer l'unicité de la cléf)En effet, comme tu l'indique, si l'on passe par une var d'environnement, on utilise le notes.ini du client (ce qui rend de ce fait, le code totalement inutilisable pour le web) et donc, garantir l'unicité des cléf est impossible. On pourrais effectivement utilisé un agent programmé qui attaquerai le notes.ini du serveur. Mais ça me semble un peu excéssif pour juste un compteur. Ajouter à cela, le fait que je ne suis pas un partisant des variables d'environnement : à trop en abuser, on fini par pollué le notes.ini. En plus de cela, on est tributaire d'un élément extérieur à l'application et qui n'est pas sécurisé (on peux le modifier sans passer par l'appli).En ce qui me concerne, j'utilise la méthode 2 (le doc de profil). C'est un élément que j'utilise très très souvent car il se manie très bien et répond parfaitement au besoin en proposant une parfaite alternative aux vars d'environements.Voilà, c'était juste mon avis sur la question.

Re: compteur

MessagePublié: 05 Mai 2003 à 09:12
par debutant
J'ai trouvé une autre methode qui me génére un numero automatiquement la voici : @Right(@Text(@DocumentUniqueID );8) mais ta methode n°2 m'interesse peut tu être plus précis ???

Re: compteur

MessagePublié: 05 Mai 2003 à 09:23
par Raziel
Salut,Exemple de la méthode 2.Sub Querysave(Source As Notesuidocument, Continue As Variant)Dim Session as new notessessionDim db as notesdatabaseDim DocProfil as notesdocumentDim Compteur as integerset db = Session.currentdatabase set DocProfil = db.getprofiledocument("NomDuDocDeProfil")while DocProfil.getitemvalue("IsLooked")(0) = "1"sleep(1)wendDocProfil.IsLooked = "1"DocProfil.save true, trueif DocProfil.hasitem("Compteur") thenCompteur = DocProfil.getitemvalue("Compteur")(0)Compteur = Compteur + 1DocProfil.Compteur = CompteurelseDocProfil.Compteur = 1Compteur = 1end ifDocProfil.IsLooked = "0"DocProfil.save true, trueEnd Sub

Re: compteur

MessagePublié: 05 Mai 2003 à 09:39
par Raziel
Petit complément d'infos :Je ne suis pas sûr que cette formule : @Right(@Text(@DocumentUniqueID );8) te génère un numéro unique.@DocumentUniqueID lui est un numéro unique (numéro composé de 32 chiffres).Tu peux aussi utiliser @unique qui te gènère une cléf aléatoire et unique composé des initiales du user et d'une succession de 5 chiffres (il me semble).

Re: compteur

MessagePublié: 05 Mai 2003 à 10:26
par debutant
@Right(@Text(@Unique);6)

Re: compteur

MessagePublié: 05 Mai 2003 à 10:30
par debutant
Ton Exemple de la méthode 2 tu l'insères où ??? désolé je débute

Re: compteur

MessagePublié: 05 Mai 2003 à 10:31
par Raziel
Non, juste @uniqueLa encore si tu ne prend qu'une partie d'une clé unique, tu ne peux pas garantir que cette clé partielle le sera aussi.

Re: compteur

MessagePublié: 05 Mai 2003 à 10:34
par Raziel
Tu peux par exemple l'insérer a la fin du querysave de ton masque.

Re: compteur

MessagePublié: 05 Mai 2003 à 10:37
par Raphaël
Resalut,dis moi, cette formule m'intéresse aussi, je l'ai mis dans un champ calculé dans mon masque. Je l'ai inséré dans le QuerySave, il faut faire autre chose?Raph

Re: compteur

MessagePublié: 05 Mai 2003 à 10:43
par Raziel
Si tu as mis le @unique dans ton champ calculé (attention, il faut qu'il soit calculé à la création sinon il sera réévalué à chaque ouverture ou rafraichissement du doc), tu n'as pas besoin de le mettre lans le querysave de ton masque.En revanche, si tu utilise la méthode 2 donnée plus haut; là tu peux le mettre dans le querysave.

Re: compteur

MessagePublié: 05 Mai 2003 à 10:53
par Raphaël
Plus simplement, il n'y aurait pas un site ou on pourrait trouvé un exemple de base avec un compteur ainsi que sa remise à zéro tout fait?Parce que j'ai beau tout essayé, je n'arrive pas à lui faire gardé la valeur zéro!! Comprend pas....Raph

Re: compteur

MessagePublié: 05 Mai 2003 à 10:58
par Raziel
Heu, j'comprends pas bien...Tu veux que ton compteur garde la valeur zéro ???Pour la remise à zéro du compteur, il suffit de faire :Dim Session as new notessessionDim db as notesdatabaseDim DocProfil as notesdocumentset db = Session.currentdatabase set DocProfil = db.getprofiledocument("NomDuDocDeProfil")DocProfil.Compteur = 0DocProfil.save true, trueEnd SubTu peux, par exemple, mettre ce code derrière un bouton qui réinitialiserai ton compteur.

Re: compteur

MessagePublié: 05 Mai 2003 à 10:58
par debutant
en faite j'ai créer un champ calculé à la création qui reprend les 6 chiffres ou lettres de @unique (@unique > qui te gènère une cléf aléatoire et unique composé des initiales du user et d'une succession de 5 chiffres style TTO-5M9DNR ) résultat je ne prend que 5M9DNR c'est pour des fiches de reclamations comme ça chaque reclam est unique.