Page 1 sur 1
Bonjour, bonne année et 1ere colle : carnets d´adresses --&g

Publié:
12 Jan 2004 à 10:02
par lotusnotes5
salut a tous, meilleurs voeux a tous et longue vie a ce forum voila mon probleme : dans des carnets d´adresses, j´ai des adresses (logiques) a partir desquelles on a forme des groupes pour faire du mailing (jusque la tout va bien) le truc est le suivant : si je cree un nouveau contact, est-il possible de le faire enregistrer automatiquement dans le carnet d´adresses selon une clé de tri ou qqch ex : j´ai un groupe Contact en Suisse, et je crée le contact Chocolat Suisse, en le créant, puis je faire qu´il aille automatiquement dans le groupe Contact en Suisse, sans avoir a aller le rajouter manuellement dans la liste des membres ? merci d´avance
Re: Bonjour, bonne année et 1ere colle : carnets d´adresses

Publié:
12 Jan 2004 à 14:24
par Oguruma59
c'est pas si simple que cela... côté structureil faut déjà intervenir dans la structure du carnet d'adresse et il faut la personnalisée...Il faut surtout éviter de modifier le modèle pubnames.ntfil faut créer ton propre modèle à partir de pubnames.ntf (stepubnames.ntf par exemple) - lui affecter un nom de modèle logique propre à ta société, tu ajoutes simple "ste" devant par exempletu mets tes deux modèles en cascade (héritage) : setpubnames.ntf hérite du modèle pubnames.ntfton carnet d'adresses repose sur ton modèle personnalisé soit stepubnames.ntfprocèdes à tous ceci avant de commencer les modificationsje te conseille cependant de faire une copie de ton names.nsf en devnames.nsf et d'appliquer cette restructuration sur cette base de test ; tu comprends j'espère l'intérêt...tu peux aussi faire un modèle de dév... afin de tout faire en double si tu veux être sûr de ne rien planterdès que tu as préparer ton environnement de développement test tu peux commencer les modifications dans modèle de dév...il faut en fait intervenir dans le masque Personne alias Person.Si tu n'as pas de client V4 tu peux passer la premiere partie du design car celle-ci est faite pour les v4 ; il faut donc aller au bout du masque et intervenir dans le tableau à ongletsdans l'onglet messagerie tu peux ajouter steGroupes multi-évaluétu y place une formule @Dbcolumn qui va bien pour afficher automatiquement les groupes connus du carnet d'adressesjusque là rien de difficileen suite il faut un peu de LS et intervenir dans le QuerySave pour procéder à l'ajout de la personne dans les groupes sélectionnésle LS devra bien entendu éviter la création en double en cas d'une mise à jour des autres éléments du masque...si tu maîtrise le LS, il n'y a rien de compliquépar contre pour la suppression d'une groupe1/ il faut confier cela à adminP et ne pas oublier de supprimer le groupe dans la fichecependant une alternative :après enregistrement de la personne dans le groupe le LS peut être charge de remette à zéro le champ groupe ; la fonction de mise à jour des groupes ne serait activée si et seulement si le champ est renseigné - ceci évite d'intervenir dans le document si la personne ne fait plus parti de ce groupe...j'espère avoir été explicite...bon si tu as des soucis en LS je peux te faire quelques lignes de principes que tu adapterais de ton côté@+
remarque

Publié:
12 Jan 2004 à 14:35
par Oguruma59
tu peux aussi accèder directement à la vue groupe en créant une liste de dialogue et prendre comme source de données la vue groupes et donner en référence la colonne n°2 pour récupérer les noms de groupes choisis
début de code

Publié:
12 Jan 2004 à 15:35
par Oguruma59
bon voici un début de code que tu pourras personnalisé, je vien de le faire j'y pas passé bcp de temps, c'est comme le champ, du brut !bien après avoir créé le champ steGroups dans l'onglet messagerie..voici le code à implémenterà toi de jouer, l'essentiel y est !@@+Sub Querysave(Source As Notesuidocument, Continue As Variant) Dim doc As NotesDocument Dim profile As NotesDocument Set doc = Source.Document '---- détection si un groupe est saisi If doc.fullname(0)<>"" Then If doc.steGroups(0)<>"" Then Print "Saisie d'un nom de groupe détectée" If Not (steAddMembers(source)) Then Continue=False Exit Sub Else doc.steGroups="" Print "Mise à jour des groupes terminée" End If End If Else Messagebox "Le nom est incomplet",16 Continue=False Exit Sub End If Set profile=doc.ParentDatabase.GetProfileDocument("PublicDirectoryProfile") If profile.GetItemValue("SecureInetPasswords")(0)="1" Then Call doc.ReplaceItemValue("$SecurePassword","1") End IfEnd Subet la fonction à implémenter en globalFunction steAddMembers (source As NotesUIDocument) As Integer On Error Goto errHandle Dim viewGroups As NotesView Dim session As notessession Dim nn As NotesName Dim doc As NotesDocument Dim docGroups As NotesDocument Dim db As NotesDatabase Dim item As NotesItem Set session=New notessession Set doc=source.Document Set db=session.currentdatabase Set viewGroups=db.GetView("Groups") Forall m In doc.steGroups Print "Ajout dans le groupe ";m;" en cours" Set docGroups=viewGroups.getDocumentByKey(m) If Not (docGroups Is Nothing) Then '--- mise à jour du jour Set item=docGroups.GetFirstItem("Members") If Not item.contains(doc.fullname(0)) Then '--- on ajout l'utilisateur dans le groupe Call item.AppendToTextList( doc.fullname(0) ) Call docGroups.save(True,False) Print "Le groupe ";m;" a été mis à jour" Else '--- déjà là ! Print "cet utilisateur (";doc.fullname(0);" est déjà dans le groupe ";m End If Else '--- le groupe est inconuu ! Print "Le groupe "; m ; " ne figure plus dans le carnet d'adresses" End If End Forall steAddMembers=True Exit FunctionerrHandle: Messagebox "Erreur n ° " & Err & " - " & Error$,16,"steAddMembers" steAddMembers=False Resume finfin:End Function
début de code

Publié:
12 Jan 2004 à 15:35
par Oguruma59
bon voici un début de code que tu pourras personnalisé, je vien de le faire j'y pas passé bcp de temps, c'est comme le champ, du brut !bien après avoir créé le champ steGroups dans l'onglet messagerie..voici le code à implémenterà toi de jouer, l'essentiel y est !@@+Sub Querysave(Source As Notesuidocument, Continue As Variant) Dim doc As NotesDocument Dim profile As NotesDocument Set doc = Source.Document '---- détection si un groupe est saisi If doc.fullname(0)<>"" Then If doc.steGroups(0)<>"" Then Print "Saisie d'un nom de groupe détectée" If Not (steAddMembers(source)) Then Continue=False Exit Sub Else doc.steGroups="" Print "Mise à jour des groupes terminée" End If End If Else Messagebox "Le nom est incomplet",16 Continue=False Exit Sub End If Set profile=doc.ParentDatabase.GetProfileDocument("PublicDirectoryProfile") If profile.GetItemValue("SecureInetPasswords")(0)="1" Then Call doc.ReplaceItemValue("$SecurePassword","1") End IfEnd Subet la fonction à implémenter en globalFunction steAddMembers (source As NotesUIDocument) As Integer On Error Goto errHandle Dim viewGroups As NotesView Dim session As notessession Dim nn As NotesName Dim doc As NotesDocument Dim docGroups As NotesDocument Dim db As NotesDatabase Dim item As NotesItem Set session=New notessession Set doc=source.Document Set db=session.currentdatabase Set viewGroups=db.GetView("Groups") Forall m In doc.steGroups Print "Ajout dans le groupe ";m;" en cours" Set docGroups=viewGroups.getDocumentByKey(m) If Not (docGroups Is Nothing) Then '--- mise à jour du jour Set item=docGroups.GetFirstItem("Members") If Not item.contains(doc.fullname(0)) Then '--- on ajout l'utilisateur dans le groupe Call item.AppendToTextList( doc.fullname(0) ) Call docGroups.save(True,False) Print "Le groupe ";m;" a été mis à jour" Else '--- déjà là ! Print "cet utilisateur (";doc.fullname(0);" est déjà dans le groupe ";m End If Else '--- le groupe est inconuu ! Print "Le groupe "; m ; " ne figure plus dans le carnet d'adresses" End If End Forall steAddMembers=True Exit FunctionerrHandle: Messagebox "Erreur n ° " & Err & " - " & Error$,16,"steAddMembers" steAddMembers=False Resume finfin:End Function
Re: début de code

Publié:
12 Jan 2004 à 15:42
par lotusnotes5
merci beaucoup a toi je maitirse pas trop la prog mais je vais voir ce que je peux fairemerci encore@++
Re: début de code

Publié:
12 Jan 2004 à 15:52
par Oguruma59
si tu as pb demandes... on verra ce que l'on peut faire...déjà l'aspect modèles en cascade... c'est important afin de ne pas modifier la structure de lotus si tu fais des upgrades, ça fonctionnera toujours@ allez y fo juste "remonter les manches" comme on dit...