<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-21265215</id><updated>2009-02-21T05:22:09.855+01:00</updated><title type='text'>BenCodes</title><subtitle type='html'>Autour du développement web avec Domino</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21265215.post-114898819258510300</id><published>2006-05-30T13:00:00.000+02:00</published><updated>2006-05-30T13:23:12.603+02:00</updated><title type='text'>La fin du 56K</title><content type='html'>Enfin !... Je redécouvre le plaisir du net à la vitesse ADSL. Après plus de 6 mois avec un modem 56K et un abonnement payant à la minute, la transition est brusque.&lt;br /&gt;J'ai du résilier mon précédent abonnement pour cause de démanagement. Ayant eu des problèmes avec 9Telecom (le commercial qui est venu me démarcher à domicile m'a menti sur plusieurs de détails de l'abonnement), et avec Tele2 (qui ont refusés de transférer l'abonnement sur une autre ligne), je voulais absolument éviter tout pépin avec mon prochain FAI.&lt;br /&gt;J'ai donc choisi France Télécom. Que s'est-il passé ? Hé bien, rien ! &lt;br /&gt;J'ai reçu le modem et toutes les infos de mon abonnement 48h après m'être inscrit.&lt;br /&gt;J'ai branché la livebox sur la prise téléphonique et sur l'ethernet de l'ordi. J'ai mis le CD d'install, attendu 2 minutes.&lt;br /&gt;J'ai lancé Firefox, et l'ADSL MAX était là, à 4600Kb/s...&lt;br /&gt;Il risque donc d'avoir plus de mouvement sur ce site dans les prochains jours.&lt;br /&gt;Le temps d'upgrader la mule, d'installer MSN 7 et de voir ce que donne GTA SanAndreas en réseau :-D ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-114898819258510300?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/114898819258510300/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=114898819258510300' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114898819258510300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114898819258510300'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/05/la-fin-du-56k.html' title='La fin du 56K'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-114552703698691700</id><published>2006-04-20T11:54:00.000+02:00</published><updated>2006-04-20T11:57:16.996+02:00</updated><title type='text'>Dialogues de sourds</title><content type='html'>Je copiais le plus simplement du monde une base Notes d'un serveur à un autre, et à la moitié de la copie, le client m'envoie un message qui me laisse sans voix...&lt;br /&gt;&lt;img src="http://benoit.colin1.free.fr/Erreur-Lotus-Notes.jpg" border=0&gt;&lt;br /&gt;Ce message est apparu à intervals irréguliers tout au long de la copie. Merci à la touche "i" du clavier...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-114552703698691700?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/114552703698691700/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=114552703698691700' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114552703698691700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114552703698691700'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/04/dialogues-de-sourds.html' title='Dialogues de sourds'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-114439761546329664</id><published>2006-04-07T10:12:00.000+02:00</published><updated>2006-04-07T10:19:05.023+02:00</updated><title type='text'>L'astuce de la semaine !</title><content type='html'>On vous a sûrement déjà demandé une fonctionnalité du style : "Serait-il possible d'afficher, à côté de l'auteur du document, le service de l'auteur, ainsi que son numéro de téléphone..."&lt;br /&gt;La réponse est "Oui, bien sûr !"... et vous voila à créer de nouvelles vues sur votre annuaire Lotus Notesafin de pouvoir y faire des @DbLookup qui vous retournent le service et numéro de téléphone pour un compte Notes donné.&lt;br /&gt;&lt;br /&gt;Stop ! &lt;br /&gt;Lorsque il s'agit de requêtes sur l'annuaire, n'utilisez jamais @DbLookup. &lt;br /&gt;La fonction a utiliser est &lt;br /&gt;&lt;pre&gt;@NameLookup( [ type_recherche ] ; nom_utilisateur ; nom_du_champ_à_renvoyer )&lt;/pre&gt;&lt;br /&gt;L'avantage est double :&lt;br /&gt;- Pas besoin de modifier votre modèle d'annuaire&lt;br /&gt;- Cette fonction est beaucoup plus performante qu'un @DbLookup !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-114439761546329664?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/114439761546329664/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=114439761546329664' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114439761546329664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114439761546329664'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/04/lastuce-de-la-semaine.html' title='L&apos;astuce de la semaine !'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-114381664983671452</id><published>2006-03-31T16:42:00.000+02:00</published><updated>2006-03-31T16:50:49.850+02:00</updated><title type='text'>BenCodes blacklisté !</title><content type='html'>Le site BenCodes était figé depuis quelques semaines, bien contre ma volonté : Les bots de Blogger ont considéré que mon blog était malveillant...&lt;br /&gt;L'accès au site a donc été coupé pour tous les visiteurs, dont moi.&lt;br /&gt;Sympa !&lt;br /&gt;Après quelques mails échangés avec le support Blogger (au passage, bravo pour leur réactivité), la situation est maintenant rétablie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-114381664983671452?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/114381664983671452/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=114381664983671452' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114381664983671452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/114381664983671452'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/03/bencodes-blacklist.html' title='BenCodes blacklisté !'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113993410686746473</id><published>2006-02-14T17:08:00.000+01:00</published><updated>2006-02-14T21:00:52.526+01:00</updated><title type='text'>L'astuce de la semaine !</title><content type='html'>Connaissez-vous la fonction Lotusscript &lt;code&gt;ComputeWithForm&lt;/code&gt; ? Elle peut se réveler d'une grande utilité dans certains cas. &lt;br /&gt;&lt;br /&gt;Exemple : Vous disposez de quelques documents qui contienent plusieurs champs, dont certains sont calculés. Vous disposez aussi d'un agent Lotuscript qui modifie un champ A sur ces documents. Ce champ A est également utilisé par les champs calculés.&lt;br /&gt;Hé bien, lorsque vous sauvegardez avec &lt;code&gt;document.Save()&lt;/code&gt;, les champs calculés ne sont... pas calculés.&lt;br /&gt;&lt;br /&gt;La solution : avant de sauvegarder, appellez la fonction &lt;code&gt;document.ComputeWithForm()&lt;/code&gt; : cela va forcer le calcul des champs calculés du masque associé à &lt;code&gt;document&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;De plus, vous pouvez demander à cette fonction de lever une erreur lors de son appel,&lt;br /&gt;si dans le masque se trouve un champ dont la formule de validation n'est pas respectée.&lt;br /&gt;&lt;br /&gt;Cette fonction est fort gourmande en CPU : attention si vous traitez beaucoup de documents.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113993410686746473?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113993410686746473/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113993410686746473' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113993410686746473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113993410686746473'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/02/lastuce-de-la-semaine.html' title='L&apos;astuce de la semaine !'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113889752551115088</id><published>2006-02-02T17:24:00.000+01:00</published><updated>2006-02-14T17:46:50.796+01:00</updated><title type='text'>Comment permettre aux utilisateurs de gérer eux-même les droits d'accès aux bases Lotus Notes</title><content type='html'>Il y a, dans ma société, plus de cinquantes bases Lotus Notes, pour plus de 600 employés. Avec les arrivées de personnel, départs, remplacements, et parfois la volonté soudaine de quelq'un d'avoir accès à une base... Cela fait beaucoup de travail pour maintenir les LCA à jour.&lt;br /&gt;&lt;br /&gt;Autre problème : suis-je vraiment habilité à dire si untel à le droit d'accéder à une base ? Non ! Ce n'est pas aux services informatiques de valider une demande d'accès à une base : la descision appartient aux chefs de service et aux directeurs.&lt;br /&gt;&lt;br /&gt;Alors, comment diminuer ce fastidieux travail de maintenance ? En reportant ce travail de maintenance vers l'utilisateur. En tenant compte d'un point important : toutes les bases Lotus Notes de ma société ne sont consultables &lt;b&gt;que en web&lt;/b&gt;. Pas de client Notes pour les utilisateurs !&lt;br /&gt;&lt;br /&gt;Pour cela, il faut au préalable définir un &lt;b&gt;chef de projet utilisateur&lt;/b&gt; (CPU) pour chacune de vos bases Lotus Notes. Ce CPU est un utilisateur "normal", qui n'a pas un profil technique. Nous allons donner à cette personne la possibilité de gérer les droits d'accès à la base dont il est le CPU.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Première étape&lt;/b&gt;&lt;br /&gt;Tout d'abord, la LCA de votre base doit vérifier un format particulier. Supposons que votre base comporte trois type d'accès utilisateur : Des lecteurs, des Editeurs, et des personnes ayant le droit de définir les droits d'accès.&lt;br /&gt; Nous allons constituer trois groupes dans la LCA :&lt;br /&gt; &lt;br /&gt; &lt;table border=0&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;font size=2&gt;Nom de la LCA&lt;td&gt;&lt;font size=2&gt;&lt;b&gt;Rôles&lt;td&gt;&lt;b&gt;&lt;font size=2&gt;Niveau d'accès&lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;LCA_NomBaseLotusNotes_Lecteurs&lt;td&gt;&lt;font size=2&gt;[Lecteurs], [LCALecteur]&lt;td&gt;&lt;font size=2&gt;Lecteurs&lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;LCA_NomBaseLotusNotes_Editeurs&lt;td&gt;&lt;font size=2&gt;[Editeurs], [LCAEditeur]&lt;td&gt;&lt;font size=2&gt;Editeurs&lt;/tr&gt;&lt;br /&gt; &lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;LCA_NomBaseLotusNotes_GestionDroits&lt;td&gt;&lt;font size=2&gt;[LCAGestionDroits]&lt;td&gt;&lt;font size=2&gt;Editeurs&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Dans l'annuaire Lotus Notes, ces trois groupes sont également présents, sous la forme de trois documents de type "Group". Ils contiennent, dans leur champ &lt;i&gt;Members&lt;/i&gt; les différentes personnes qui ont accès à la base.&lt;br /&gt;&lt;br /&gt;Attention, si vous mettez les personnes en dur dans la LCA, ce système ne fonctionne pas. Cela fonctionne uniquement si vos entrées de LCA sont des groupes.&lt;br /&gt;&lt;br /&gt;Les rôles [Lecteur] [Editeur] servent pour les droits liées à l'application (droit de modifier un doc, etc.)&lt;br /&gt;Les rôles [LCALecteur], [LCAEditeur] et [LCAGestionDroits] servent uniquement aux agents que je décris plus bas. Cela leur permet d'identifier le nom des groupes, &lt;br /&gt;dans l'annuaire Lotus Notes, ils doivent modifier pour mettre à jour les droits.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Deuxième étape&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Nous allons créer un nouveau masque "AdministrationDroitsAcces". Ce sera l'interface de l'utilisateur pour modifier les droits d'accès.&lt;br /&gt;Ce document contient trois champs multi-valués : ListeLecteurs, ListeEditeurs, ListeGestionDroits. Sur le WebQueryOpen du document, un agent nommé "LectureAnnuaire" se déclenche. Cet agent se charge de remplir les champs ListeLecteurs, ListeEditeurs, ListeGestionDroits du masque avec les valeurs présentes dans les groupes de l'annuaire Lotus Notes. Voici son code :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;font size=2 face="Courier New"&gt;&lt;font color="#000000"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Initialize&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;dbannuaire&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdatabase&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;session&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notessession&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;db&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;contexte&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesview&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesitem&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesitem&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;acl&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesACL&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;entry&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesACLEntry&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;db&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.currentdatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;contexte&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.DocumentContext&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt;   &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' d'abord on r&amp;eacute;cup&amp;eacute;re les noms des LCA de l'on doit aller lire dans &lt;br /&gt;&lt;/i&gt;&lt;/font&gt;l&lt;font color="#008000"&gt;&lt;i&gt;'annuaire&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;acl&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;db.ACL&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;entry&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;acl.getfirstentry&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;entry&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;Forall&lt;font color="#008080"&gt; &lt;/font&gt;role&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;In&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;entry.Roles&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;role=&lt;font color="#800000"&gt;&amp;quot;[LCAGestionDroits]&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' c'est le nom du groupe pouvant g&amp;eacute;rer les droits !&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;lca_admin=entry.Name&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;role=&lt;font color="#800000"&gt;&amp;quot;[LCAEditeur]&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' c'est le nom du groupe d'&amp;eacute;diteurs !&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;lca_editeur=entry.Name&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;role=&lt;font color="#800000"&gt;&amp;quot;[LCALecteur]&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' c'est le nom du groupe de lecteurs !&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;lca_lecteur=entry.Name&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Forall&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;entry&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;acl.GetNextEntry(entry)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' ouverture de l'annuaire Lotus Notes&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;dbannuaire.open&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;names.nsf&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;' on va lire sur l'annuaire Notes le contenu de la liste GestionDroits&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;contexte.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;ListeGestionDroits&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbnames.getview(&lt;font color="#800000"&gt;&amp;quot;Groups&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=lca_admin&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;Forall&lt;font color="#008080"&gt; &lt;/font&gt;v&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;In&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item.values&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(v)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Forall&lt;font color="#008080"&gt;   &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;'maj de la liste editeurs&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;contexte.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Editeurs&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbnames.getview(&lt;font color="#800000"&gt;&amp;quot;Groups&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=lca_editeur&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;Forall&lt;font color="#008080"&gt; &lt;/font&gt;v&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;In&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item.values&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(v)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Forall&lt;font color="#008080"&gt;   &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;if&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;'maj de la liste lecteurs&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;contexte.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Lecteurs&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=lca_lecteur&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;Forall&lt;font color="#008080"&gt; &lt;/font&gt;v&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;In&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item.values&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(v)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Forall&lt;font color="#008080"&gt;   &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt;&lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Sub&lt;br /&gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br&gt;On obtient donc une page ayant cet aspect :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Gestion des droits : &lt;/b&gt;Jean Dupont&lt;br /&gt;&lt;b&gt;Editeurs : &lt;/b&gt;Pierre Jacques, John Smith&lt;br /&gt;&lt;b&gt;Lecteurs : &lt;/b&gt;Marc Dupond, Jacques Duchemin&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Troisème étape&lt;/b&gt;&lt;br /&gt;Il est assez aisé, en furetant sur internet, de trouver en web un "sélecteur de personnes" équivalent à celui qui se trouve sur le client Notes. Il permet à l'utilisateur d'ajouter ou d'enlever des personnes de ces listes. &lt;br /&gt;Il reste donc à répercuter ces modifications effectuées par l'utilisateur vers l'annuaire Lotus Notes. (Si vous suivez toujours, en changeant ces listes, l'utilisateur ne modifie que le masque AdministrationsDroitsAcces...)&lt;br /&gt;&lt;br /&gt;Cela est fait par un agent nommé "EcritureAnnuaire" qui se déclenche en WebQuerySave. Voici son code :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;font size=2 face="Courier New"&gt;&lt;font color="#000000"&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Initialize&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;dbannuaire&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdatabase&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;session&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notessession&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;db&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;contexte&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesview&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;item&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesitem&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;notesitem&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;db&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.currentdatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;contexte&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.DocumentContext&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;dbannuaire.open&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;names.nsf&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;'maj sur l'annuaire de la des personnes Gestion droits&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbnames.getview(&lt;font color="#800000"&gt;&amp;quot;Groups&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=contexte.NomLCAAdmin(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.replaceitemvalue(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt;   &lt;br /&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt;   &lt;br /&gt;   &lt;/font&gt;liste=Explode(contexte.Admins(&lt;font color="#0000FF"&gt;0&lt;/font&gt;),&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;,&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;For&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;0&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;To&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Ubound&lt;/font&gt;(liste)&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(liste(i))&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Next&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt;  &lt;br /&gt;   &lt;/font&gt;doc.Save&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;'maj sur l'annuaire de la liste des editeurs&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbnames.getview(&lt;font color="#800000"&gt;&amp;quot;Groups&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=contexte.NomLCAEditeur(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.replaceitemvalue(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt;   &lt;br /&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt;   &lt;br /&gt;   &lt;/font&gt;liste=Explode(contexte.Editeurs(&lt;font color="#0000FF"&gt;0&lt;/font&gt;),&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;,&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;For&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;0&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;To&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Ubound&lt;/font&gt;(liste)&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(liste(i))&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Next&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt;  &lt;br /&gt;   &lt;/font&gt;doc.Save&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt;   &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;'maj sur l'annuaire de la liste des lecteurs&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbnames.getview(&lt;font color="#800000"&gt;&amp;quot;Groups&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getfirstdocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.ListName(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)=contexte.NomLCALecteur(&lt;font color="#0000FF"&gt;0&lt;/font&gt;)&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.replaceitemvalue(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt;   &lt;br /&gt;   &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;it&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getfirstitem(&lt;font color="#800000"&gt;&amp;quot;Members&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;liste=OTBExplode(contexte.Lecteurs(&lt;font color="#0000FF"&gt;0&lt;/font&gt;),&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;,&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;For&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;0&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;To&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Ubound&lt;/font&gt;(liste)&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;it.appendtotextlist(liste(i))&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;Next&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;i&lt;font color="#008080"&gt;  &lt;br /&gt;   &lt;/font&gt;doc.Save&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;view.getnextdocument(doc)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt;&lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Sub&lt;br /&gt;&lt;br /&gt;Function&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Explode(src&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Variant&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;separator&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Variant&lt;/b&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;res()&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;String&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Long&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;reste&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;String&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;nbElts&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Integer&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;reste&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;src&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Instr&lt;/font&gt;(reste,&lt;font color="#008080"&gt; &lt;/font&gt;separator)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;&amp;lt;&amp;gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;0&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Redim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Preserve&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;res&lt;font color="#008080"&gt; &lt;/font&gt;(nbElts)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;res&lt;font color="#008080"&gt; &lt;/font&gt;(nbElts)&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Left&lt;/font&gt;$(reste,&lt;font color="#008080"&gt; &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;-&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;1&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;reste&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Right&lt;/font&gt;$(reste,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Len&lt;/font&gt;(reste)&lt;font color="#008080"&gt; &lt;/font&gt;-&lt;font color="#008080"&gt; &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;-&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Len&lt;/font&gt;(separator)&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;1&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;nbElts&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;nbElts&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#0000FF"&gt;1&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;index&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Instr&lt;/font&gt;(reste,&lt;font color="#008080"&gt; &lt;/font&gt;separator)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Redim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Preserve&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;res&lt;font color="#008080"&gt; &lt;/font&gt;(nbElts)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;res&lt;font color="#008080"&gt; &lt;/font&gt;(nbElts)&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;reste&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;Explode&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;res&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt;&lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;function&lt;br /&gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br&gt;Et voilà !&lt;br /&gt;Avec ce système, les utilisateurs modifient les groupes de l'annuaire Lotus Notes - et donc les droits d'accès aux bases - sans s'en rendre compte et sans se connecter à l'annuaire. &lt;br /&gt;Il ont ainsi une interface simplifiée qui leur permet de gérer les droits d'accès à la base sans client Notes !&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;Rédigé le 02/02/2006&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113889752551115088?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113889752551115088/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113889752551115088' title='5 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113889752551115088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113889752551115088'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/02/comment-permettre-aux-utilisateurs-de.html' title='Comment permettre aux utilisateurs de gérer eux-même les droits d&apos;accès aux bases Lotus Notes'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113862458665530237</id><published>2006-01-30T13:35:00.000+01:00</published><updated>2006-02-14T17:45:57.456+01:00</updated><title type='text'>Lire et écrire sur des annuaires LDAP avec des agents Lotus Notes</title><content type='html'>Pour effectuer ces d'opérations depuis Lotus Notes, j'utilise des agents Java sur mon annuaire. &lt;br /&gt;&lt;br /&gt;Voici le code simplifié de cet agent. Il renseigne, sur un autre annuaire LDAP (par exemple l'annuaire LDAP Windows) &lt;br /&gt;le champ "OU", en y mettant la valeur du champ "Service" de l'annuaire Lotus Notes, en me basant sur la clé "Nom-Prénom".&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;font size=2 face="Courier New"&gt;&lt;font color="#000000"&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;lotus.domino.*;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;javax.naming.*;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;javax.naming.directory.*;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;java.util.Hashtable;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;java.util.Vector;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;java.util.Map;&lt;br /&gt;&lt;b&gt;import&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;java.lang.String;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;public&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;class&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;LectureLDAP&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;extends&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;AgentBase&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;public&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;void&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesMain()&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;      &lt;/font&gt;&lt;b&gt;try&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;Session&lt;font color="#008080"&gt; &lt;/font&gt;session&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;getSession();&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;Log&lt;font color="#008080"&gt; &lt;/font&gt;log&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.createLog(&lt;font color="#800000"&gt;&amp;quot;EcritureNotesVersLDAP&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;log.openFileLog(&lt;font color="#800000"&gt;&amp;quot;d:/Lotus/AMgr_Log/EcritureLDAP_Telephonique.txt&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;AgentContext&lt;font color="#008080"&gt; &lt;/font&gt;agentContext&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.getAgentContext();&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;Database&lt;font color="#008080"&gt; &lt;/font&gt;db;&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;db&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;agentContext.getCurrentDatabase();&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;D&amp;eacute;marrage de l'agent&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;java.util.Hashtable&lt;font color="#008080"&gt; &lt;/font&gt;env&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;java.util.Hashtable();&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot;&lt;/font&gt;);&lt;font color="#008080"&gt; &lt;br /&gt;         &lt;/font&gt;env.put(Context.PROVIDER_URL,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;ldap://NomDuServeurLDAP:389/&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// ici j'indique que je me connecte avec authentification : user + mot de passe env.put(Context.SECURITY_AUTHENTICATION, &amp;quot;simple&amp;quot;);&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;env.put(Context.SECURITY_PRINCIPAL,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;uid=Compte LDAP,o=directory&amp;quot;&lt;/font&gt;);&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// user &lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;env.put(Context.SECURITY_CREDENTIALS,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;MotDePasse&amp;quot;&lt;/font&gt;);&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// mot de passe&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;DirContext&lt;font color="#008080"&gt; &lt;/font&gt;ctx&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;InitialDirContext(env);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;Connexion LDAP ok&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;ModificationItem[]&lt;font color="#008080"&gt; &lt;/font&gt;mods&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;ModificationItem[&lt;font color="#000080"&gt;1&lt;/font&gt;];&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;View&lt;font color="#008080"&gt; &lt;/font&gt;vue&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;db.getView(&lt;font color="#800000"&gt;&amp;quot;(Personnes)&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;Document&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;vue.getFirstDocument();&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;&lt;b&gt;while&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;(doc&lt;font color="#008080"&gt; &lt;/font&gt;!=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;null&lt;/b&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;nom&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getItemValueString(&lt;font color="#800000"&gt;&amp;quot;LastName&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;prenom&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getItemValueString(&lt;font color="#800000"&gt;&amp;quot;FirstName&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;identif&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;prenom&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;nom&lt;font color="#008080"&gt; &lt;/font&gt;;&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;service&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;doc.getItemValueString(&lt;font color="#800000"&gt;&amp;quot;ServiceL&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;br /&gt;            &lt;/font&gt;NamingEnumeration&lt;font color="#008080"&gt; &lt;/font&gt;answer;&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;recherche&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;o=directory&amp;quot;&lt;/font&gt;;&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;String&lt;font color="#008080"&gt; &lt;/font&gt;filtre&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;(uid=&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;identif&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;)&amp;quot;&lt;/font&gt;;&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;SearchControls&lt;font color="#008080"&gt; &lt;/font&gt;ctls&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;SearchControls();&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// Pour que la recherche porte &amp;eacute;galement sur les sous-niveaux du noeud LDAP &lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;Recherche avec filtre = &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;filtre&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; sur la base &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;br /&gt;            &lt;/font&gt;recherche);&lt;font color="#008080"&gt; &lt;/font&gt;answer&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;ctx.search(&lt;font color="#008080"&gt; &lt;/font&gt;recherche,&lt;font color="#008080"&gt; &lt;/font&gt;filtre,&lt;font color="#008080"&gt; &lt;/font&gt;ctls);&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;br /&gt;            &lt;/font&gt;&lt;b&gt;if&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;(answer.hasMore())&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;               &lt;/font&gt;&lt;b&gt;try&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;                  &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// Modification du compte LDAP&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;                  &lt;/font&gt;Attributes&lt;font color="#008080"&gt; &lt;/font&gt;attrs&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;sr.getAttributes();&lt;br /&gt;&lt;font color="#008080"&gt;                  &lt;/font&gt;mods[&lt;font color="#000080"&gt;0&lt;/font&gt;]&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;ModificationItem(DirContext.REPLACE_ATTRIBUTE,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;new&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt;                  &lt;/font&gt;BasicAttribute(&lt;font color="#800000"&gt;&amp;quot;ou&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;service));&lt;font color="#008080"&gt; &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;J'essaie de modifier &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;name&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; pour mettre ou=&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;service);&lt;font color="#008080"&gt; &lt;/font&gt;ctx.modifyAttributes(name,&lt;font color="#008080"&gt; &lt;/font&gt;mods);&lt;br /&gt;&lt;font color="#008080"&gt;                  &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;ok !&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;               &lt;/font&gt;}&lt;br /&gt;&lt;font color="#008080"&gt;               &lt;/font&gt;&lt;b&gt;catch&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;(Exception&lt;font color="#008080"&gt; &lt;/font&gt;e4)&lt;font color="#008080"&gt; &lt;br /&gt;               &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;                  &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;Erreur lors de la tentative de modification de &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;filtre&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;br /&gt;                  &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; : &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;e4);&lt;font color="#008080"&gt; &lt;br /&gt;               &lt;/font&gt;}&lt;br /&gt;&lt;font color="#008080"&gt;               &lt;br /&gt;            &lt;/font&gt;}&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;&lt;b&gt;else&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;            &lt;/font&gt;{&lt;br /&gt;&lt;font color="#008080"&gt;             &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;Impossible de trouver &amp;quot;&lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;prenom&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;nom&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; dans l'annuaire LDAP. Pas de modification effectu&amp;eacute;e&amp;quot;&lt;/font&gt;);&lt;font color="#008080"&gt; &lt;br /&gt;            &lt;/font&gt;}&lt;br /&gt;&lt;br /&gt;&lt;font color="#008080"&gt;            &lt;br /&gt;            &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;vue.getNextDocument(doc);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;}&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// fin boucle principale while&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;/font&gt;log.logAction(&lt;font color="#800000"&gt;&amp;quot;Fin normale de l'agent&amp;quot;&lt;/font&gt;);&lt;br /&gt;&lt;font color="#008080"&gt;         &lt;br /&gt;         &lt;br /&gt;      &lt;/font&gt;}&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;catch&lt;/b&gt;(Exception&lt;font color="#008080"&gt; &lt;/font&gt;e)&lt;font color="#008080"&gt; &lt;/font&gt;{&lt;font color="#008080"&gt; &lt;/font&gt;system.out.println(&lt;font color="#800000"&gt;&amp;quot;Erreur : &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;e);&lt;font color="#008080"&gt; &lt;/font&gt;}&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// fin try&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;}&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// fin main&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;}&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#008000"&gt;&lt;i&gt;// fin classe&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;Le 30/01/2006 - Benoît Colin&lt;/div&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113862458665530237?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113862458665530237/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113862458665530237' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113862458665530237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113862458665530237'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/01/lire-et-crire-sur-des-annuaires-ldap.html' title='Lire et écrire sur des annuaires LDAP avec des agents Lotus Notes'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113837583209707163</id><published>2006-01-27T16:29:00.001+01:00</published><updated>2006-02-14T17:45:36.003+01:00</updated><title type='text'>Comment superviser l'exécution de tous les agents plannifiés d'un serveur</title><content type='html'>Difficile, avec Lotus Notes, d'avoir un aperçu général des exécutions de tous les agents planifiés se trouvant sur un serveur. Il faut ouvrir les bases une par une, ouvrir les agents plannifiés un par un pour pouvoir voir quand un agent plannifier doit s'exécuter.&lt;br /&gt;&lt;br /&gt;Mon souhait était d'avoir une vision globale de tous les agents du serveur et de leur plannification, afin de me rendre compte des pics de charges liées à l'exécution de ces agents.&lt;br /&gt;&lt;br /&gt;Cela a été possible grace à... un agent LotusScript plannifié. Appelons-le "Agent Audit". &lt;br /&gt;Son principe est simple : cet agent parcours toutes les bases du serveur ; pour chacune des bases, il examine les agents qui sont de type "plannifiés"...&lt;br /&gt;&lt;br /&gt;Malheureusement, les classes LotusScript ne nous permettent pas d'accèder aux propriétés de plannification d'un agent (c'est à dire si il est exécuté quotidiennement, hebdomadairement, à quelle heure, à quel intervalle...)&lt;br /&gt;&lt;br /&gt;Par contre, on peut accèder à une autre information, qui nous sera bien utile :  la dernière date d'exécution de l'agent !&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Agent.LastRun&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Je plannifie mon "Agent Audit" pour qu'il s'exécute toutes les 10 minutes.&lt;br /&gt;Ainsi, régulièrement, cet agent récupére la dernière date d'exécution de tous les agents plannifiés. Ces informations sont enregistrées dans les documents Notes (Date-Heure, Nom de la base Notes, Nom de l'agent, Dernière date d'exécution).&lt;br /&gt; &lt;br /&gt;Bon, trèves de bla-bla, voici le code :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;font size=2 face="Courier New"&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;On&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Error&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Goto&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;erreur&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;session&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesSession&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;currentdb&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesDatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;database&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;as&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Notesdatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;view&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesView&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesDocument&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;currentdb&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;session.CurrentDatabase&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Dim&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;dbdir&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;As&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;New&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;NotesDbDirectory(&lt;font color="#800000"&gt;&amp;quot;MonServeur/SVR/MonDomaine&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;database&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbdir.GetFirstDatabase(DATABASE)&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;While&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;database&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Is&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Nothing&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;  &lt;/font&gt;TentativeOuverture=&lt;b&gt;True&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;database.Open&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;TentativeOuverture=&lt;b&gt;False&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;  &lt;/font&gt;agents&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;database.Agents&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Not&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800080"&gt;Isempty&lt;/font&gt;(agents)&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;   &lt;/font&gt;Forall&lt;font color="#008080"&gt; &lt;/font&gt;a&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;In&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;agents&lt;br /&gt;&lt;font color="#008080"&gt;    &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;a.trigger&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;TRIGGER_SCHEDULED&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;And&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;a.HasRunSinceModified&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;     &lt;br /&gt;     &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;db.CreateDocument&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.&lt;font color="#800080"&gt;form&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;DateExecAgent&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.Base&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;database.Title&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.BaseFichier&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;ReplaceString(database.FilePath,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;\&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.Agent&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;a.Name&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.DerniereDateExecution&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;a.LastRun&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.Serveur&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;a.ServerName&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.BaseAgent&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;ReplaceString(database.FilePath,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;\&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;-&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;a.Name&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.Save&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;)&lt;font color="#008080"&gt;    &lt;br /&gt;     &lt;br /&gt;     &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;db.CreateDocument&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.&lt;font color="#800080"&gt;form&lt;/font&gt;=&lt;font color="#800000"&gt;&amp;quot;Agent&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;doc.BaseAgent&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;ReplaceString(db2.FilePath,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;\&amp;quot;&lt;/font&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;/&amp;quot;&lt;/font&gt;)&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;-&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;+&lt;font color="#008080"&gt; &lt;/font&gt;a.Name&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;doc.Save(&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;     &lt;br /&gt;    &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;   &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;Forall&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt;  &lt;br /&gt;&lt;/font&gt;BaseSuivante&lt;font color="#008080"&gt; &lt;/font&gt;:&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;database&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;dbdir.GetNextDatabase&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Wend&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;Exit&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Sub&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;br /&gt;&lt;/font&gt;erreur&lt;font color="#008080"&gt; &lt;/font&gt;:&lt;br /&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;&lt;b&gt;If&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;TentativeOuverture&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Then&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Set&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;nlog&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;db.createdocument&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;nlog.&lt;font color="#800080"&gt;form&lt;/font&gt;=&lt;font color="#800000"&gt;&amp;quot;Log&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;nlog.Body&lt;font color="#008080"&gt; &lt;/font&gt;=&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Impossible d'ouvrir la base &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;db2.Title&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; : &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;Error&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; ligne &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;Str(Erl)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;/font&gt;&lt;b&gt;Call&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;nlog.Save&lt;font color="#008080"&gt; &lt;/font&gt;(&lt;b&gt;True&lt;/b&gt;,&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;True&lt;/b&gt;)&lt;br /&gt;&lt;font color="#008080"&gt;  &lt;br /&gt;  &lt;/font&gt;&lt;b&gt;Resume&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;BaseSuivante&lt;br /&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;End&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;b&gt;If&lt;br /&gt;&lt;/b&gt;&lt;font color="#008080"&gt; &lt;br /&gt; &lt;/font&gt;Messagebox(&lt;b&gt;Error&lt;/b&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; &amp;agrave; la ligne &amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&amp;amp;&lt;font color="#008080"&gt; &lt;/font&gt;Str(Erl))&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="right"&gt;Le 27/01/2006 - Benoît Colin&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113837583209707163?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113837583209707163/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113837583209707163' title='11 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113837583209707163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113837583209707163'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/01/comment-superviser-lexcution-de-tous_27.html' title='Comment superviser l&apos;exécution de tous les agents plannifiés d&apos;un serveur'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113803801772668154</id><published>2006-01-23T18:28:00.000+01:00</published><updated>2006-01-27T17:33:48.360+01:00</updated><title type='text'>Une vue Lotus Notes 100% html mais néanmoins catégorisée</title><content type='html'>&lt;font face="verdana, arial"&gt;&lt;br&gt;&lt;strong&gt;&lt;font color="#41ae24"&gt;Le problème&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Sous Lotus Notes, l'utilisation de la propriété "Traiter le contenu de la vue comme du code html" interdit en principe d'utiliser les fonctions de déployer-condenser de catégories lors de la consultation de la vue avec le navigateur. En effet, Domino ne génére pas de boutons permettant de déployer une catégorie d'une vue. Comment faire pour obtenir une vue ayant ces fonctions, si la vue est paramétrée comme "Traiter le contenu de la vue comme du code html" ?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#41ae24"&gt;La solution&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;Il est possible de contourner ce problème, grace aux commandes URL Domino. L'appel d'une vue se fait sous la syntaxe suivante :&lt;br /&gt;&lt;br /&gt;&lt;font face="courier"&gt;http://ServeurDomino/BaseLotusNotes.nsf/NomDeLaVue?OpenView&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Ou, éventuellement, l'appel peut se faire sur un masque contenant la vue (vue intégrée) :&lt;br /&gt;&lt;br /&gt;&lt;font face="courier"&gt;http://ServeurDomino/BaseLotusNotes.nsf/NomDuMasqueContenantLaVue?OpenForm&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;La commandes ?OpenForm et ?OpenView acceptent des paramétres facultatifs qui permettent de jouer sur ce qui doit être affiché par la vue :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CollapseView &lt;/b&gt;: &lt;/b&gt;Condense toutes les catégories&lt;br /&gt;&lt;b&gt;ExpandView : &lt;/b&gt;Déploie toutes les catégories&lt;br /&gt;&lt;b&gt;Collapse=&amp;lt;num&amp;gt; : &lt;/b&gt;Condense la catégorie identifiée par son numéro &amp;lt;num&amp;gt; dans la vue&lt;br /&gt;&lt;b&gt;Expand=&amp;lt;num&amp;gt; : &lt;/b&gt;Déploie la catégorie identifiée par son numéro &amp;lt;num&amp;gt; dans la vue&lt;br /&gt;&lt;b&gt;Start=&amp;lt;num&amp;gt; : &lt;/b&gt;N'affiche que les lignes se trouvant sous la ligne &amp;lt;num&amp;gt; incluse&lt;br /&gt;&lt;b&gt;Count=&amp;lt;num&amp;gt; : &lt;/b&gt;Nombre de lignes à afficher&lt;br /&gt;&lt;br /&gt;&amp;lt;num&amp;gt; pouvant être hiérarchisé, c'est à dire prendre des valeurs comme 2.3.1 ou 1.5.&lt;br /&gt;&lt;br /&gt;Ainsi, la commande URL &lt;font face="courier"&gt;http://ServeurDomino/BaseLotusNotes.nsf/NomDuMasque?OpenForm&amp;Expand=1.5&lt;/font&gt; aura pour effet d'ouvrir la vue et de déployer la cinquieme sous-catégorie de la premiere catégorie.&lt;br /&gt;&lt;br /&gt;Si on dispose des données suivantes :&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Boissons&lt;br /&gt;&amp;nbsp;&amp;nbsp;Froides&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Limonade&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Soda&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;Chaudes&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Café&lt;br /&gt;&lt;strong&gt;Plats&lt;br /&gt;&amp;nbsp;&amp;nbsp;Froids&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sandwich jambon&lt;br /&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;Chauds &lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Steack frites&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tartiflette&lt;br /&gt;&lt;br /&gt;La commande URL &lt;font face="courrier"&gt;http://ServeurDomino/BaseLotusNotes.nsf/NomDuMasque?OpenForm&amp;amp;Expand=2.1&lt;/font&gt; ouvrira la vue et déploiera la section "Froids" de la section "Plats".&lt;br /&gt;La commande URL &lt;font face="courier"&gt;http://ServeurDomino/BaseLotusNotes.nsf/NomDuMasque?OpenForm&amp;Expand=2&lt;/font&gt; ouvrira la vue et déploiera la section "Plats", sans déployer ses sous-catégories.&lt;br /&gt;&lt;br /&gt;Dans le design de la vue, il suffit donc d'utiliser le code HTML suivant pour toutes les colonnes catégorisées :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;a href='NomDuMasqueContenantLaVue?Openform&amp;Expand=" + @DocNumber + "'&amp;gt;" + TypeAliment + "&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Le code HTML généré par cette vue sera :&lt;br /&gt;&lt;br /&gt;&lt;font face="courrier"&gt;&amp;lt;a href='NomDuMasqueContenantLaVue?Openform&amp;Expand=1'&amp;gt;Boissons&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;a href='NomDuMasqueContenantLaVue?Openform&amp;Expand=1.1'&amp;gt;Froides&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;...&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Le résultat : une vue avec catégories, mais que l'on peut personnaliser intégralement car elle est 100% html !&lt;br /&gt;&lt;br /&gt;Sympa, non ?&lt;br /&gt;&lt;br /&gt;&lt;p align="right"&gt;&lt;i&gt;Le 14/12/2005 - Benoit Colin&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113803801772668154?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113803801772668154/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113803801772668154' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113803801772668154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113803801772668154'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2006/01/une-vue-lotus-notes-100-html-mais.html' title='Une vue Lotus Notes 100% html mais néanmoins catégorisée'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21265215.post-113864289837403812</id><published>2000-01-01T13:00:00.000+01:00</published><updated>2006-02-20T17:34:15.673+01:00</updated><title type='text'>A propos de l'auteur</title><content type='html'>&lt;br&gt;&lt;br /&gt;Après deux années de classes préparatoires au Lycée Baggio de Lille et trois ans d'études à l'&lt;a href="http://www.eisti.fr" alt="Ecole Internationale des Sciences du Traitement de l'Information"&gt;EISTI&lt;/a&gt;, j'ai obtenu en 2005 le diplôme d'ingénieur en systèmes informatiques complexes et intelligence artificielle.&lt;br /&gt;Durant ce cursus, j'ai effectué trois stages (Thales, la SNCF et, en stage de fin d'études, Pimkie-Diramode International). J'occupe depuis novembre 2005 le poste de Chef de projet Intranet au sein de Pimkie Diramode International.&lt;br /&gt;&lt;br /&gt;Côté vie privée, je suis un touche-à-tout avec certaintes tendances plus constantes comme la musique (percussions, musique électronique) et les sports de glisse (skateboard et snowboard).&lt;br /&gt;&lt;br /&gt;Pour me contacter : benoit.colin1 AT free.fr&lt;br /&gt;&lt;br /&gt;&lt;img src="http://benoit.colin1.free.fr/photocvbenoit.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mes compétences&lt;/b&gt;&lt;br /&gt;Environnements de développement : Visual Studio .NET, WinDev, CVILab, Dev-C++, Lotus Notes Designer.&lt;br /&gt;Technologies objet : C++, Java.&lt;br /&gt;Langages : C, WinDev, VisualBasic, XML, Corba, Javascript, PHP, ASP, AutoIt, LotusScript.&lt;br /&gt;Bases de données : Oracle, PL-SQL, Php-SQL.&lt;br /&gt;Programmation logique : PROLOG, CLIPS.&lt;br /&gt;Analyse : UML, Merise.&lt;br /&gt;Méthodologies de projets : GANTT, PERT, MS-Project.&lt;br /&gt;Multimédia : Flash, Dreamweaver, Cubase, LogicAudio, CoolEdit, PhotoShop, FireWorks.&lt;br /&gt;Logiciels pour hardware : VHDL.&lt;br /&gt;Divers : Latex.&lt;br /&gt;&lt;br /&gt;Spécialisation en Systèmes informatiques complexes et  intelligence artificielle (Automates cellulaires, Apprentissage par exploration, Programmation logique inductive et par contrainte, Évolution simulée, Réseaux de neurones)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21265215-113864289837403812?l=bencodes.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bencodes.blogspot.com/feeds/113864289837403812/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21265215&amp;postID=113864289837403812' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113864289837403812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21265215/posts/default/113864289837403812'/><link rel='alternate' type='text/html' href='http://bencodes.blogspot.com/2000/01/propos-de-lauteur.html' title='A propos de l&apos;auteur'/><author><name>Benoit</name><uri>http://www.blogger.com/profile/17292277715249469913</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05450369776076489981'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>