Page 1 sur 1
Suppression d'une liste de valeurs d'un champ liste

Publié:
09 Oct 2012 à 09:16
par DomNotes
Bonjour,
J'ai un document avec deux champs liste :
Liste utilisateurs :contient la liste des utilisateurs à supprimer
Liste groupes : contient la liste des groupe dans lesquels il faut chercher les utilisateurs ci-dessus et les supprimer.
le but c'est de supprimer ces utilisateurs des groupes listés du names.
J'ai déja commencer à faire quelque chose mais je ne sais pas si c'est bon ou pas (le code n'est pas complet)
- Code : Tout sélectionner
Dim session As NotesSession
Dim db, Nab As NotesDatabase
Dim doc, config,Grpsdoc As NotesDocument
Dim membersList As Variant
Dim grpsList As Variant
Dim grpsmemberslist As Variant
Dim grpsView As NotesView
Set Session = New NotesSession
Set db = session.CurrentDatabase
Set doc = db.currentdocument
Set Config = DB.GetProfileDocument("Config")
Set Nab= Session.GetDatabase(Config.srv_name(0),Config.carnet(0))
Set grpsView = nab.GetView("($VIMGroups)" )
membersList=doc.userslist
grpsList =doc.groupslist
Set grpsDoc = grpsview.GetallDocumentByKey(grpslist, True)
If Not Doc Is Nothing Then
grpsmemberList = grpsdoc.GetItemValue( "Members" )
Forall member In grpsmemberList
Set lkupdoc = grpsView.GetDocumentByKey( "" , True)
If lkupdoc Is Nothing Then
Else
End If
End Forall
End If
Merci pour votre aide
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
09 Oct 2012 à 10:25
par Michael DELIQUE
salut
regarde ici =>
viewforum.php?f=33tu devrais trouver ton bonheur
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
09 Oct 2012 à 16:10
par DomNotes
Bonsoir,
Merci pour le lien.
J'ai réussi à faire fonctionner la fonction de suppression d'un membre d'une liste. Le problème que j'ai maintenant c'est que moi j'ai deux listes (groupes et utilisateurs) et le code traite une seule valeur. Il cherche un seul user dans un seul groupe.
Merci d'avance
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
09 Oct 2012 à 16:22
par Michael DELIQUE
il manque une boucle dans ton code !
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
10 Oct 2012 à 01:54
par roubech
getAllDocByKey ne prend pas plusieurs valeur d'une clé (au mieux il prend des clé multiple, mais basé sur plusieurs colonnes ...)
moi je verrai plutot un truc du genre
- Code : Tout sélectionner
forall groupName in GroupList
set docGroup = viewGroup.getDocumentByKey(groupName, true)
if not docGroup is nothing then
needSave = false
forall userName in UserList
Set Item = DocGroupe.GetFirstItem("Members")
if Item.Contains(usreName) then
arrTmp = ArrayReplace(docGroup.Members, userName, "")
call docGroup.replaceItemValue("Members", arrTmp)
needSave = true
end if
next
if needSave then call docGroup.save
end if
next
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 09:26
par DomNotes
Bonjour,
Merci Roubech pour ton code, ça fonctionne super bien après qlq modifs.
Je reviens vers vous car j'ai rencontré un autre problème.
Certains nom que je veux supprimer dans le carnet d'adresse sont au format [CN] (nom prénom) donc quand je lance la recherche il ne le trouve pas. Il va faloir que je fasse une recherche sur tous les types de nom Abbreviate,CN, et canonical.
malgré que j'ai déclaré Membername en tant que NotesName il ne le formate pas au 3 format et du coup il ne trouve pas la valeur et ne la supprime pas
Merci d'avance
- Code : Tout sélectionner
Dim item As NotesItem
Dim nmUser As NotesName
Dim arrtmp As Variant
Dim Membername As NotesName
Set viewGroup = nab.GetView("($VIMGroups)" ) 'Vue à parcourir dans le names
UserList=doc.userslist
GroupList =doc.groupslist
DtDebut=Cstr(Now) 'Date et heure de début de traiment
Set docGroup = viewGroup.getDocumentByKey(groupName, True)
If Not docGroup Is Nothing Then
needSave = False
Forall userName In UserList
Set nmUser = New NotesName(Trim(userName))
Set Item = DocGroup.GetFirstItem("Members")
Membervalue = Item.Values
Forall value In Membervalue
Set Membername = New NotesName(Trim(value))
'If Item.Contains(usreName) Then
If Item.Contains(nmUser.Canonical) = True Or Item.Contains(nmUser.Abbreviated) = True Or Item.Contains(nmUser.Common) = True Then
If Membername.Canonical = nmUser.Canonical Then
arrTmp = Arrayreplace(docGroup.Members, userName, "")
Call docGroup.replaceItemValue("Members", arrTmp)
needSave = True
End If
End If
End Forall
End Forall
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 09:28
par Michael DELIQUE
salut
je te déconseil de faire une recherche sur le common name, car si tu as des homonymes sur 2 OU différentes tu ne pourra pas faire la différence
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 09:41
par DomNotes
Salut,
J'aimerai bien faire une recherche sur le Abbreviate mais j'arrive pas à mettre le nom que je récupère du document groupe à ce format. vu que dans les groupes il y'a des noms au format CN qui ont été saisie et non pas sélectionné du names.
Malgré que je le déclare en tant que "NotesNames" il ne le formate pas.
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 10:01
par Michael DELIQUE
pour ma part voila comment je ferais
- Code : Tout sélectionner
Dim lstGroup List As String
Dim item As NotesItem
Membervalue = DocGroup.getItemValue("Members")
ForAll value In Membervalue
If Trim(CStr(Value)) <> "" Then
Set nmUser = New NotesName( Trim(CStr(Value)))
lstGroup(nmUser.Canonical) = nmUser.Canonical
Set nmUser = Nothing
End If
End ForAll
Set nmUser = New NotesName(Trim("User a retirer"))
If IsElement(lstGroup(nmUser.Canonical)) = True Then
lstGroup(nmUser.Canonical)= ""
End If
Set nmUser = New NotesName(Trim("User a ajouter"))
If IsElement(lstGroup(nmUser.Canonical)) = False Then
lstGroup(nmUser.Canonical)= nmUser.Canonical
End If
Set Item = Doc.getFirstItem("Members")
If item Is Nothing Then
Set Item = New NotesItem(DocGroupe,"Members","",NAMES)
Else
Item.values = null
End If
ForAll value In lstGroupe
If Trim(CStr(Value)) <> "" Then
Set nmUser = New NotesName( Trim(CStr(Value)))
Call item.Appendtotextlist(nmUser.Canonical)
Set nmUser = Nothing
End If
End ForAll
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 10:25
par DomNotes
Bonjour,
D'après ce que j'ai compris, dans votre code vous traiter une seule liste celle des membervalue (les noms des membres du groupe).
Alors que moi j'ai deux liste listes :
Liste utilisateurs :contient la liste des utilisateurs à supprimer
Liste groupes : contient la liste des groupes dans lesquels il faut chercher les utilisateurs ci-dessus et les supprimer.
J'ai pas compris aussi pourquoi vous parlez dans cette ligne d'utilisateur à ajouter
Set nmUser = New NotesName(Trim("User a ajouter"))
Cordialement,
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
12 Oct 2012 à 10:29
par Michael DELIQUE
c'est un code exemple, pour montrer le principe
à toi de l'adapter.
Re: Suppression d'une liste de valeurs d'un champ liste

Publié:
18 Oct 2012 à 15:28
par DomNotes
C'est bon,
Merci pour votre aide