Page 1 sur 1
créer un compteur

Publié:
23 Juil 2003 à 13:20
par ravax
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.@ +
Re: créer un compteur

Publié:
23 Juil 2003 à 13:23
par phi
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.
Re: créer un compteur

Publié:
23 Juil 2003 à 13:39
par polo
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.
Re: créer un compteur

Publié:
23 Juil 2003 à 14:05
par ravax
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 ?
Re: créer un compteur

Publié:
23 Juil 2003 à 14:35
par polo
tu as bien la vue AllFiche ??
Re: créer un compteur

Publié:
23 Juil 2003 à 14:41
par Droad
La fonction @Max, avant la v6, prend deux paramètres.[%sig%]
Re: créer un compteur

Publié:
23 Juil 2003 à 15:04
par ravax
je suis effectivement en version 5.je lui donne quoi comme valeur à ce 2ème paramètre ?
Re: créer un compteur

Publié:
23 Juil 2003 à 15:10
par clémentine
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...
Re: créer un compteur

Publié:
23 Juil 2003 à 15:13
par polo
essai : 1
Re: créer un compteur

Publié:
23 Juil 2003 à 15:13
par Droad
En fait, étant donné que la vue est triée-décroissante, pas besoin de @Max:R := @Subset(ListeNum;1)+1[%sig%]
Re: créer un compteur

Publié:
23 Juil 2003 à 15:56
par CED
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...
Re: créer un compteur

Publié:
23 Juil 2003 à 16:04
par Droad
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%]
Re: créer un compteur

Publié:
23 Juil 2003 à 16:08
par ravax
merci à tous pour vos réponses, je vais essayé de me dépatouiller avec ça.@ +
Re: créer un compteur

Publié:
23 Juil 2003 à 16:50
par polo
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();...
Re: créer un compteur

Publié:
24 Juil 2003 à 15:19
par titounella
J'ai éssayé ce code mais il s'affiche variant does not contain un object?