par AdminExpert » 19 Déc 2003 à 23:49
bon le voici, cependant je peux te filer (email ?) la base dans laquelle je l'ai développé. (no risks, no spams)si tu souhaites tester ma base, n'oublies pas de changer le nom de l'administrateur Local, car celui qui y figure est bidon.1. Principe-------------A priori il me semble dangereux d'effectuer cette modification dans le modèle de base fourni par Lotus (pubnames.ntf). Il faut donc que tu réalise un modèle entreprise personnalisé.1.1 réalisation du modèle personnalisé entreprise---------------------------------------------------------------- à l'aide de ton client Notes, tu copies ton names.nsf de la manière suivante :- règlage de la LCA de ournames.ntf (laisser le minium et defaut à pas d'accès) - se base sur la LCA de la base pubnames.ntf (modèle standard)- onglet structure des propriétés de la base ournames.ntf! - surtout tu laisses l'option Hérite de la structure du modèle ; en effet en cas de mise à jour du modèle par Lotus, ton modèle bénéficieras automatiquement des mises à jour de structure du modèle Lotus. (d'où l'intérêt de ne jamais modifier le modèle Lotus)Le modèle personnalisé entrerprise est donc réalisé, il faut désormais faire pointer ton names.nsf (en production) sur le nouveau modèle logique personnalisé entreprise. Pour ceci :- sélectionner le carnet d'adresses names.nsf! remarque : cette modification doit être faite après validation du code sur une base de test afin de ne pas perturber la production, et je recommande une "mini recette" si tu as du temps avec un groupe "pilote".1.2 Réalisation des modifications de structure dans la base ournames.ntf---------------------------------------------------------------------------------------------ouvrir le masque Groupe1.2.0 - section (globals) declaration---------------------------------------------ajouterDim Members_1 As Variant1.2.1 - section Option---------------------------ajouter la ligneUse "ClassMail"1.2.2 - section postopen du masque----------------------------------------------ajouter le code Dim db As NotesDatabase Dim doc As NotesDocument Dim uidoc As notesuidocument Dim w As New NotesUIWorkspace Dim s As New NotesSession Set db = s.CurrentDatabase Set uidoc=w.currentdocument Set doc = uidoc.document '--- on sauvegarde le contenu du champ Members Members_1=doc.Members1.2.4 - section querysave--------------------------------ajouter à la fin de procédureCall CheckGroup1.2.5 - section (global)----------------------------ajouter la procédureSub CheckGroup Dim db As NotesDatabase Dim doc As NotesDocument Dim uidoc As notesuidocument Dim w As New NotesUIWorkspace Dim s As New NotesSession Dim MailAdmin As Mail Dim Obj As String Dim n1 As Integer Dim n2 As Integer Dim n As Integer Dim Members_2 As Variant Set db = s.CurrentDatabase Set uidoc=w.currentdocument Set doc = uidoc.document Members_2=Doc.Members n1=Ubound(Members_1) n2=Ubound(doc.Members) If n2=0 And Trim$(doc.Members(0))<>"" Then n2=1 n=n1- n2 If n<> 0 Then Print "Des modifications ont été constatées dans la liste des membre du groupe..." '--- On prépare l'objet du message If n<0 Then Obj=Cstr(n * -1) + " Ajout(s) dans le groupe " + doc.ListName(0) Else Obj=Cstr(n) + " Suppression(s) dans le groupe " + doc.ListName(0) End If Obj=Obj + " par " + s.CommonUserName '--- Message d'alerte Set MailAdmin=New Mail MailAdmin.Subject=Obj Call MailAdmin.SetBody("Voici la liste des modifications :") Call MailAdmin.SetBody("") Call MailAdmin.SetColor(COLOR_DARK_GREEN) Call MailAdmin.SetBody("Liste des membres avant la modification :") Forall m1 In Members_1 Call MailAdmin.SetBody("- " & m1) End Forall Call MailAdmin.SetBody("") Call MailAdmin.SetColor(COLOR_RED) Call MailAdmin.SetBody("Liste des membres après la modification :") Forall m2 In Members_2 Call MailAdmin.SetBody("- " & m2) End Forall Call MailAdmin.SetRecipients(Doc.LocalAdmin,Null,Null) Call MailAdmin.Send(False) Delete MailAdmin End If End Sub1.3 - création de la bliothèque CallMail-------------------------------------------------Cette bibliothèque exite dans ce forum, il suffit de la reprendre telle quelle est de la nommer ClassMailet oufff enfin c'est fini y a plus qu'à valider tout ceci...Je l'ai testé sur mon serveur à domicile, ça fonctionne GOOD, on peut améliorer encore, mais comme je t'ai c'est du brut de fonderie.J'espère répondre à ton besoin.