créer un compteur

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

créer un compteur

Messagepar ravax » 23 Juil 2003 à 13:20

Bonjour tous,Je suis novice sous designer.J'essai de "développer" (mot un peu fort vu mon niveau) une base de demande.J'aurais besoin de mettre un place un compteur pour avoir un numéro sur chaque demandes.J'ai cherché sur le forum, mais je ne parviens pas à mettre en pratique les exemples trouvés.Il me manque trop de vocabulaire et notion de dev pour arriver à mes fins.S'il avait une âme charitable pour tout m'expliquer en détails, ça serait bien sympa.par avance merci.@ +
ravax
 

Re: créer un compteur

Messagepar phi » 23 Juil 2003 à 13:23

Salut,Tu peux utiliser l'ID du document que tu crées pour identifier ta fiche, c'est un numéro unique.En lotusscript : notesdocument.NoteIDEn formula : @NoteIDphi.
phi
 

Re: créer un compteur

Messagepar polo » 23 Juil 2003 à 13:39

voici une possiblité : - tu crées un champ numeric modifiable 'NbFiche' par exemple. - tu affecte comme valeur par défaut :ListeNum := @DbColumn("":"NoCache";"":"";"AllFiche";1);R := @Max(ListeNum)+1;@If(@IsError(R);1;R) - il faut créer une vue 'AllFiche' trié par NbFiche décroissant.pour optimiser ce système : - il faut ajouter ce code à l'enregistrement de la fiche :Set VueCompteur = db.GetView("VwFicheCompteur") 'trié par numéro decroissantCall VueCompteur.Refresh()Set docTmp =VueCompteur.GetFirstDocument()If Not docTmp Is Nothing Then newNbFiche = docTmp.NbFiche(0)+1 If uidoc.FieldGetText("NbFiche") <> Cstr(newNbFiche) Then IncCompteur=True End IfEnd If- dans les propriétés de la vue, specifier un recalcul de l'index manuellement.et ca fonctionne très bien.
polo
 

Re: créer un compteur

Messagepar ravax » 23 Juil 2003 à 14:05

au moment ou je rentre cette valeurListeNum := @DbColumn("":"NoCache";"":"";"AllFiche";1);R := @Max(ListeNum)+1;@If(@IsError(R);1;R)j'obtient un erreur : trop peu d'argument pour la fonction @:')'avec la ) de (ListeNum) en rouge.il manque quelque chose ?
ravax
 

Re: créer un compteur

Messagepar polo » 23 Juil 2003 à 14:35

tu as bien la vue AllFiche ??
polo
 

Re: créer un compteur

Messagepar Droad » 23 Juil 2003 à 14:41

La fonction @Max, avant la v6, prend deux paramètres.[%sig%]
Droad
 

Re: créer un compteur

Messagepar ravax » 23 Juil 2003 à 15:04

je suis effectivement en version 5.je lui donne quoi comme valeur à ce 2ème paramètre ?
ravax
 

Re: créer un compteur

Messagepar clémentine » 23 Juil 2003 à 15:10

Pour info, si tu ne veux pas passer par LotusScript, il y a une autre solution.Tu crées un doc profil, c'est à dire un masque que tu appelles par exemple "docprofile". Ce masque ne doit pas être visuable depuis une vue (dans tes sélections de vue n'inclues pas les documents créés par ce masque).Dans ce masque, tu crées un champ que tu appelles par exemple "compteur" et de type texte.Tu mets comme valeur par défaut "0" pour ton compteur.Pour créer ton doc profile, tu prévisualises le masque et tu l'enregistres.Ensuite, dans les masques que tu utilises pour créer tes documents, tu insères un champ, par exemple numDemande qui affichera le numéro de ta demande dans la base. Ce champ doit être de type calculé avec comme valeur par défaut "".Dans l'évenement QuerySave de ce masque, tu choisis le langage des formules et tu mets quelque chose du type : REM "le compteur ne s incrémente que lorsque l on enregistre un nouveau document, sinon on sort";@If( !@IsNewDoc ; @Return(""); "");REM "on récupère la valeur du doc profile";val := @GetProfileField("Doc Profile";"compteur");REM "si elle n est pas nulle, on l incrémente";new_val := @If(val = "" ; 1 ; @TextToNumber(val) + 1);REM "(cf un sujet déjà posté sur ce forum....)";REM "tu remets la valeur incrémentée dans le champ du doc profil";@SetProfileField("Doc Profile";"compteur"; @Text(new_val)); REM "tu transmet la valeur de ton compteur au champ numDemande";@SetField("numDemande"; new_val);et voila.Par contre, je ne sais pas ce que cela donne si plusieurs utilisateurs enregistrent en même temps ou des choses de ce genre...
clémentine
 

Re: créer un compteur

Messagepar polo » 23 Juil 2003 à 15:13

essai : 1
polo
 

Re: créer un compteur

Messagepar Droad » 23 Juil 2003 à 15:13

En fait, étant donné que la vue est triée-décroissante, pas besoin de @Max:R := @Subset(ListeNum;1)+1[%sig%]
Droad
 

Re: créer un compteur

Messagepar CED » 23 Juil 2003 à 15:56

Mouaih.... Je suis plus de cet avis là.Par contre attention en cas d'enregistremet du doc au même moment par deux users... Je chipote un peu mais bon...;Autre soluce, travailler de même avec un doc de profil (c la meilleure façon pour traiter un compteur, la plus propre...) mais ajouter le numéro de doc dans un agent programmé qui tourne sur le serveur.De cette façon impossible d'avoir deux fois le même n°.EX : mon agent traite dans une boucle les docs n'ayant pas de N°, il récupère le compteur du doc de profil, ajoute celui ci au premier doc, incrémente le compteur, passe au deuxième doc et ajoute le compteur du doc de profil...,incrémente le compteur, passe au troisième doc et ajoute le compteur du doc de profil......... etcPS : ne pas oublier de sauver les doc.... et le doc de profil à la fin du traitement...
CED
 

Re: créer un compteur

Messagepar Droad » 23 Juil 2003 à 16:04

Pour blablater un peu, j'ai l'impression qu'il n'y a pas de solution idéale pour le pb du compteur. Toutes les méthodes que j'ai essayé ont leurs avantages et (surtout) leurs inconvénients, qui peuvent ou ne peuvent pas être ignorés selon le contexte de l'application:1) La méthode @DbColumn sur un numéro stocké dans les docs a 2 pb:- Le dbcolumn est limité à 64k. Si la base est énorme (ça arrive), il faut trouver le moyen de limiter la vue à n-derniers documents ou bien passerpar du LS.- Elle est dépendante des docs. S'ils sont masqués par des champs lecteur, archivés, etc ... il peut y avoir des retour en arrière.2) Stockage du numéro dans un doc de profil: Pas viable en client Web.3) Stockage du compteur dans un doc standard:- En client Notes, il faut bien définir l'interface. Le doc de compeur doitêtre modifiable par tous les créateurs (donc "public access" ou avec un champ auteur ad-hoc) mais uniquement via les scripts/agents.- Si la charge est vraiment importante, il y a des risques de conflit d'enregistrement.Si ya mieux et gratuit, j'aimerais bien connaitre.[%sig%]
Droad
 

Re: créer un compteur

Messagepar ravax » 23 Juil 2003 à 16:08

merci à tous pour vos réponses, je vais essayé de me dépatouiller avec ça.@ +
ravax
 

Re: créer un compteur

Messagepar polo » 23 Juil 2003 à 16:50

en fait ce tri est utilisé dans le lotusScript lancé lors de l'enregistrement du document; ou va chercher le premier document de la vue et donc le dernier....Set docTmp =VueCompteur.GetFirstDocument();...
polo
 

Re: créer un compteur

Messagepar titounella » 24 Juil 2003 à 15:19

J'ai éssayé ce code mais il s'affiche variant does not contain un object?
titounella
 


Retour vers Développement

cron