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

VBScript Discussion :

Connexion ADAM, requête LDAP


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 12
    Points
    12
    Par défaut Connexion ADAM, requête LDAP
    Bonjour à tous,

    Je bloque sur un petit script "à la c***"
    Mon objectif : récupérer la valeur de l'attribut "diag-libelleComplet" pour une OU (écrite temporairement en dur pour les tests).
    Le contexte :
    l'annuaire ADAM :
    host : servo.pric.priv
    port : 50001
    BindDN : uid=lecteur,ou=compteservice,o=anap1
    Password : mdpAdam
    Toutes les structures (qui correspondent à des OU)se trouvent sous la branche OU=structure,O=anap1

    Voici mon script actuel :

    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
    Const ADS_SCOPE_SUBTREE = 2
    Const STRDOMAIN = "dc=pric,dc=priv"
    Const OUPATH = "ou=structure"
    Dim struc, strUsername, strPassword
    Dim objConnection, objCommand, objRecordSet
     
    struc = "JCA"
    strUsername = "uid=lecteur,ou=compteservice,o=anap1"
    strPassword = "mdpAdam"
     
    Set objConnection = CreateObject("ADODB.Connection")
      objConnection.Provider = "ADsDSOObject"
      objConnection.Open "ADsDSOObject, strUsername, strPassword, 1"
     
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
      objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
      objCommand.CommandText = "SELECT diag-libelleComplet FROM 'LDAP://o=anap1,dc=pric,dc=priv' WHERE Name=struc "
    Set objRecordSet = objCommand.Execute
    If objRecordSet.RecordCount = 0 Then
      MsgBox "Any result"
      Else
      Msgbox "Some result"
    End If
    Bien évidemment, ça ne fonctionne pas...
    J'ai le message d'erreur : "Le tableau n'existe pas" à la ligne "Set objRecordSet = objCommand.Execute"
    Si quelqu'un a une idée...

    ps : il me semble avoir lu dans un forum que pour un annuaire ADAM, les attributs étant modifiables, on ne pouvait retourner que certains attributs "par défaut". Mais impossible de remettre la main sur ce post, ni de trouver confirmation ailleurs...

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    salut,..

    ben déjà pour utiliser la valeur d'une variable chaine et pas son nom .. il faut "sortir" cette variable des "... de plus il te faut peu-être des guillemets (simples : ') autour de cette valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     objCommand.CommandText = "SELECT diag-libelleComplet FROM 'LDAP://o=anap1,dc=pric,dc=priv' WHERE Name='" & struc & "'"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour la réponse. Malheureusement, mon erreur de syntaxe n'est qu'une coquille. Pour mes tests, je mets en dur dans ma requête "[...] Name = 'JCA' "
    En recopiant, j'ai fait un mix raté :p J'ai même modifiée la requête pour être sûr que l'erreur ne vienne pas de là.
    Vu que le port qu'on m'a indiqué (50001) est le port du LDAP-SSL, j'ai modifié un peu le code :
    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
    Const ADS_USE_SSL = 2
    Const ADS_SCOPE_SUBTREE = 2
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
      objConnection.Provider = "ADsDSOObject"
      objConnection.Properties("User ID") = _
        "uid=lecteur,ou=compteservice,o=anap1"
      objConnection.Properties("Password") = "mdpAdam"
      objConnection.Properties("Encrypt Password") = True
      objConnection.Properties("ADSI Flag") = ADS_USE_SSL
      objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
      objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
      objCommand.CommandText = "SELECT name FROM 'ldap://servo.pric.priv:50001/OU=structure,O=ANAP1' WHERE objectClass='organizationalUnit'"
    Set objRecordSet = objCommand.Execute
     
    If objRecordSet.RecordCount = 0 Then
      MsgBox "Any result"
      Else
      Msgbox "Some result"
    End If
    La requête LDAP est "à priori" bonne, vu qu'elle me renvoie ce que je veux dans un explorateur LDAP. Par contre, quand j'exécute le code dans le Visual Basic Editor d'office, dans l'explorateur de variables, il m'indique une erreur pour objconnexion :
    "Le fournisseur ne prend pas en charge cette propriété." (screen de l'erreur : http://www.teteve.fr/erreurVB.jpg).
    Et j'ai toujours l'erreur sur objRecordSet : "Erreur d'exécution '-2147217865 (80040e37)' : Le tableau n'existe pas."

    Si ça parle à quelqu'un...

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      objCommand.CommandText = "SELECT name FROM 'ldap://servo.pric.priv:50001/OU=structure,O=ANAP1' WHERE objectClass='organizationalUnit'"
    je ne suis pas des plus compétant sur ce type de requête, mais ce qui me gène se sont les apostrophes quelle contient.
    Si structure et ANAP1 sont des variables, dans ta requête, tu fournis le nom des variables, pas leurs contenues.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Merci de vos réponses, même si elles sont un peu "hors-sujet" par rapport à mon souci
    Dans ces scripts de test, je n'ai mis volontairement aucune variable, afin de pouvoir tester "directement". (sauf erreur dans le 1er code, mais comme expliqué, c'était une erreur de recopie) En plus j'avais marqué les infos dans le 1er post :p
    J'ai trouvé la solution, même si je ne sais pas exactement le pourquoi du comment.
    Voici le code fonctionnel :

    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
    Const ADS_SCOPE_SUBTREE = 2
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Properties("User ID") = "uid=lecteur,ou=compteservice,o=anap1"
    objConnection.Properties("Password") = "mdpAdam"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    objCommand.CommandText = "SELECT Name FROM 'ldap://servo.pric.priv:50001/OU=structure,O=ANAP1' WHERE objectClass='organizationalUnit' "
    Set objRecordSet = objCommand.Execute
     
    If objRecordSet.RecordCount = 0 Then
      MsgBox "Any result"
      Else
      Msgbox "Some result"
    End If
    Ce qui bloquait apparemment, c'est de spécifier le protocole SSL _ET_ le port 50001. Ce n'était qu'une histoire de paramètres bons/mauvais/inutiles dans ma connexion. Soit...
    Merci quand même à vous deux

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

Discussions similaires

  1. [Mail] Requête LDAP de sélection de données
    Par Yoteco dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2010, 12h28
  2. Requête LDAP pour trouver les groupes d'un membre
    Par Poussy-Puce dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/10/2006, 17h56
  3. problème avec une requête LDAP
    Par tfdarklink dans le forum Modules
    Réponses: 2
    Dernier message: 02/08/2006, 16h59
  4. [JNDI/LDAP] Requête LDAP ordonnée
    Par nesbla dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/06/2006, 09h38
  5. LDAP : Problème persistant de connexion à un serveur LDAP!!!
    Par onouiri dans le forum Développement
    Réponses: 11
    Dernier message: 15/11/2005, 19h05

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