Suppression d'une liste de valeurs d'un champ liste

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 09 Oct 2012 à 09:16

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
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar Michael DELIQUE » 09 Oct 2012 à 10:25

salut

regarde ici => viewforum.php?f=33

tu devrais trouver ton bonheur
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 09 Oct 2012 à 16:10

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
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar Michael DELIQUE » 09 Oct 2012 à 16:22

il manque une boucle dans ton code !
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar roubech » 10 Oct 2012 à 01:54

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
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 12 Oct 2012 à 09:26

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
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar Michael DELIQUE » 12 Oct 2012 à 09:28

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
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 12 Oct 2012 à 09:41

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.
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar Michael DELIQUE » 12 Oct 2012 à 10:01

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
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 12 Oct 2012 à 10:25

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,
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar Michael DELIQUE » 12 Oct 2012 à 10:29

c'est un code exemple, pour montrer le principe

à toi de l'adapter.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Suppression d'une liste de valeurs d'un champ liste

Messagepar DomNotes » 18 Oct 2012 à 15:28

C'est bon,

Merci pour votre aide
Avatar de l’utilisateur
DomNotes
Posteur néophyte
Posteur néophyte
 
Message(s) : 74
Inscrit(e) le : 22 Déc 2004 à 11:08


Retour vers Développement

cron