IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Liaison entre access et Active directory [AC-2007]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Points : 97
    Points
    97
    Par défaut Liaison entre access et Active directory
    Bonjour

    Je voudrais savoir s'il est possible de récupérer la liste des utilisateurs d'active directory et de insérer dans une base Access.

    Pour l'instant j'ai juste un code qui me permet de récupérer tout l'active directory, ce que je voudrais, c'est pouvoir filtrer et récupérer seulement ce que je souhaite (Déscendre dans l'arborescence)

    Cordialement
    Merci de votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    J'explicite un peu plus mon problème, J'ai récupéré un morceau de code sur le net afin d'effectuer une connexion entre Access et VBA, voici le code de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    'Déclaration des variables
        Dim strScope As String, strAttrs As String, strFilter As String, strBase As String, strDomainDN As String, strPath As String
        Dim LDAP As String, group As String, login As String, nom As String, mbrf As String
        Dim prenom As String, validite As String, expi As String, org As String
        Dim tvar() As String
        Dim sql As String
        Dim mabd As Database
        Dim objconn As Object, objRS As Object, objuser As Object
        Dim member As Variant
        Dim i As Integer
     
        Set mabd = CurrentDb() 'mabd est la base de donnée dans laquel on travaille
        strDomainDN = "mon domaine"
        strBase = "<LDAP://" & strDomainDN & ">;" 'Définition de l'objet
        strFilter = "(&(objectclass=user)(objectcategory=person));" 'Filtre le jeu d'enregistrement afin de garder que les utilisateurs dans l'objet AD
        strAttrs = "distinguishedname;" 'Correspond à l'attribut de l'objet que l'on va regarder
        strScope = "subtree" 'On pourra rechercher les utilisateurs dans l'arborescence
        i = 1
     
        'Connection à la base
        Set objconn = CreateObject("ADODB.Connection") 'Création d'un objet pour la connexion
        objconn.Provider = "ADsDSOObject" 'Définition du pilote de connexion
        objconn.Open "Active Directory Provider" 'Ouverture de la base
     
        'Validation de la connexion
        Set objRS = objconn.Execute(strBase & strFilter & strAttrs & strPath & strScope)
        objRS.MoveFirst 'Requête d'action sur la recherche.
     
        'Suppression des données existante dans la base.
        sql = "DELETE * FROM TP_Utilisateur_importer"
        DoCmd.SetWarnings False
        DoCmd.RunSQL sql
        DoCmd.SetWarnings True
     
        Do Until objRS.EOF
            LDAP = (objRS.Fields(0).Value)  'Obtient le lien LDAP de l'objet trouver
            Set objuser = GetObject("LDAP://" & LDAP & "")
     
            Traitement...
        Loop
     
    mabd.Close
    Set objRS = Nothing
    Set objconn = Nothing
    End Sub
    Ce code fonctionne parfaitement il me récupére bien tous les utilisateurs de l'active directory. Le soucis c'est que je voudrais récupérer qu'une partie de l'AD. L'active directory est classé en dossier
    Premier niveau pays (france, indonésie,...)
    Deuxiéme niveau ville (Paris, Rouen,...)
    Troisiéme niveau Statut (utilisateur, Manageur,Administrateur)
    Moi ce que je voudrais récupérer c'est seleument le troisiéme niveau d'une ville donnée et d'un pays donnée (france\Rouen\utilisateur, france\Rouen\Manageur, france\Rouen\Administrateur)

    J'ai trouvé sur le net que l'on pouvez écrire le chemin ldap comme ça :
    strDomainDN = "OU=france\Rouen\utilisateur,DC=Domaine,Dc=Extension"
    strBase = "<LDAP://" & strDomainDN & ">;"

    Mais ça me mes une erreur "Le tableau n'existe pas"

    Est ce que quelqu'un aurai une idée car la je sèche complétement.

    Cordialement
    Et je vous remercie de votre aide

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    Personne a une idée pour pouvoir régler mon problème. Est ce que je me suis mal exprimer .

    Une idée, une piste, une direction, Peut importe la solution donnée ça m'aiderai beaucoup

    Merci
    J'attends votre retour.

  4. #4
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut on regarde
    Bonjour,

    sur ce forum peut de personne ont accès à une arborescence dans un domaine.

    J'ai l'opportunité d'avoir accès à une arbo, je fais les tests en ce moment même.

    Je n'ai jamais tenté d'y accéder avec access ...

    je te tiens informé de mes pérégrinations.

    a+

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 626
    Points : 726
    Points
    726
    Par défaut la suite ..
    Bonjour,

    Voici du code qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Function extractionLDAP()
     
    Dim conn
    Dim lareq
    Dim nomserveur
     
    Set conn = CreateObject("ADODB.Connection")
    conn.Provider = "ADSDSOObject"
    nomserveur = "LDAP://nomduserveur"
    conn.Properties("User ID") = "domaine\administrateur"
    conn.Properties("Password") = "motdepasse"
    conn.Properties("Encrypt Password") = True
    conn.Open "ADs Provider"
     
     
    Set lareq = conn.Execute("SELECT ADsPath, cn FROM '" + nomserveur + "' WHERE objectClass='user' and objectCategory ='Person'")
     
        While Not lareq.EOF
            Debug.Print lareq("cn").Value
            lareq.MoveNext
        Wend
     
    End Function

    pour le filtrage de la requête
    j'ai installé "adsi edit" , puis je suis allé voir les catégories en visualisant les propriétés des objets pour effectuer le filtrage désiré, pour ensuite les ajouter à la condition (where),

    dans l'exemple on filtre seulement les personnes, souci c'est qu'il peut y avoir des personnes logiques ...

    l'intégration dans une table c'est gâteau.

    a+

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Points : 97
    Points
    97
    Par défaut Voici la solution
    Bonjour

    Après de multiple de recherche est un accès directe sur l'active directory, j'ai trouvé le moyen d'accéder à l'arborescence de celui ci. Le moyen d'y accédez est d'utiliser le mot clé "OU" dans le chemin Ldap.

    Voici comment je l'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Déclaration de variable
        ...
        Set mabd = CurrentDb() 'mabd est la base de donnée dans laquel on travaille
        strDomainDN = "Ou=Arbo4,Ou=Arbo3,Ou=Arbo2,Ou=Arbo1, DC=mon domaine, DC=Extension"
        strBase = "<LDAP://" & strDomainDN & ">;" 'Définition de l'objet
        strFilter = "(&(objectclass=user)(objectcategory=person));" 'Filtre le jeu d'enregistrement afin de garder que les utilisateurs dans l'objet AD
        strAttrs = "distinguishedname;" 'Correspond à l'attribut de l'objet que l'on va regarder
        strScope = "subtree" 'On pourra rechercher les utilisateurs dans l'arborescence
        i = 1
     
        'Connection à la base
    ...
    Fonction
    Là où j'ai bloquer était que j'indiquai le chemin dans le sens de Lecture (Arbo1, arbo2,...). Alors qu'il faut partir du dossier source (Arbo4, arbo3, arbo2,...).

    En espérant que ma réponse va aider d'autres personnes, Celle si peux être mis dans la FAQ

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. une liaison LDAP vers un active directory
    Par PHPkoala dans le forum Administration système
    Réponses: 9
    Dernier message: 04/05/2009, 09h50
  2. Liaison entre Access et tables Oracle
    Par lerico dans le forum Modélisation
    Réponses: 1
    Dernier message: 05/09/2008, 15h35
  3. Liaison entre access et excel
    Par pursang25 dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 01h12
  4. Réponses: 3
    Dernier message: 20/05/2006, 00h28
  5. [VB-E/A/.net] Liaison entre Access, Excel
    Par Speranza dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/05/2006, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo