PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Annuaire LPAP
Annuaire LPAP
Débuté par syl, 02 juin 2005 13:30 - 10 réponses
Posté le 02 juin 2005 - 13:30
Bonjour,

Je souhaiterais consulter un annuaire lpad pour récupérer le nom des utilisateurs et leurs groupes.

Mais, j'ai un problème, je n'arrive pas savoir comment il faut faire. Sur le forum, j'ai vu des choses intéressantes, mais je ne comprends pas beaucoup de choses.

J'aimerais avec un peu aide sur les différentes étapes qu'il faut effectuer --> les grandes lignes avec les fonctions les plus importantes.


Merci d'avance

Syl
Posté le 02 juin 2005 - 13:56
Bonjour,

Moi je me sert d'une requête ADSI pour lire dans LDAP.
Crée une fenêtre sur laquelle tu met :
- 1 Table avec 2 colonnes (ici Tbl_User)
- 1 bouton
copie le code ci-desous dans ton bouton, change les info pour le serveur, le compte, le pasword...
Bien entendu tu peux charger d'autres champs que le nom (sn) et le prénom (givenName) en modifiant la requête.

PS : Tu dois avoir Mdac d'installé (Normalement si tu as XP il n'y a pas de problème)

//----------------------------------------------------------------------------------------------
Résultat est un booléen
ipADSI est une chaîne = "AdresseServeur"
UserADSI et une chaine = "CompteUserADMIN"
PasswordADSI est une chaîne = "MotDePasseDuCompte"
sdADSI est une Source de Données

//genere la requete
Requete est une chaîne ="SELECT sn,givenName FROM 'LDAP://OU=Users,DC=fr,DC=corp,DC=local'"

//lance la recherche dans LDAP
Message("Recherche les comptes dans Active Directory...")
HDécritConnexion("ADSI",UserADSI,PasswordADSI,ipADSI,"","ADsDSOObject",hOLecture)
Résultat = HOuvreConnexion("ADSI")
SI HExécuteRequêteSQL(sdADSI,"ADSI",hRequêteSansCorrection,Requete) ALORS
HLitPremier(sdADSI)
TANTQUE PAS HEnDehors(sdADSI)
TableAjouteLigne(tbl_User,sdADSI.sn,sdADSI.givenName)
HLitSuivant(sdADSI)
FIN
SINON
Erreur(HErreurInfo(hErrMessage))
FIN
HFermeConnexion("ADSI")
Message()
//----------------------------------------------------------------------------------------------
Posté le 02 juin 2005 - 14:13
Rebonjour,

Merci beaucoup, je vais essayer ta proposition.Je te redirais quoi.

Cordialement

Syl
Posté le 02 juin 2005 - 14:43
Je viens d'essayer le code, mais j'ai un probleme au niveau de la requete.

j'ai comme erreur : Erreur de l'accès OLE DB, numéro d'erreur 170129.

Si tu as une petite idée au cas où, pour ma part, je fais essayer de voir ce qui ne va pas.

Sinon, ca décrit quoi ce code : 'LDAP://OU=Users,DC=fr,DC=corp,DC=local'

Syl
Posté le 02 juin 2005 - 14:51
Utilise LDAP et non MDAC c'est un méga conseil (MDAC plante sur certains PC
et pas d'autre LDAP fonctionne partout !!!)
regarde dans le forum j'ai envoyé à "Cédric - LDAP Récupérer le logon" tout
ce qu'il te faut !

POUR INFORMATION
ADSI Active Directory Service Interfaces c'est l'annuaire
et
LDAP Lightweight Directory Access Protocol est un protocol

donc parler de "> Moi je me sert d'une requête ADSI pour lire dans LDAP."
est complétement erroné........
Si tu veux j'ai besoin de testeur pour mes fonctions LDAP....


"Julien SIMON" <julien.simon@alvea.fr> a écrit dans le message de
news:429ecba6$1@news.pcsoft.fr...

Bonjour,

Moi je me sert d'une requête ADSI pour lire dans LDAP.
Crée une fenêtre sur laquelle tu met :
- 1 Table avec 2 colonnes (ici Tbl_User)
- 1 bouton
copie le code ci-desous dans ton bouton, change les info pour le serveur,

le compte, le pasword...
> Bien entendu tu peux charger d'autres champs que le nom (sn) et le prénom
(givenName) en modifiant la requête.

PS : Tu dois avoir Mdac d'installé (Normalement si tu as XP il n'y a pas

de problème)


//--------------------------------------------------------------------------
--------------------
Résultat est un booléen
ipADSI est une chaîne = "AdresseServeur"
UserADSI et une chaine = "CompteUserADMIN"
PasswordADSI est une chaîne = "MotDePasseDuCompte"
sdADSI est une Source de Données

//genere la requete
Requete est une chaîne ="SELECT sn,givenName FROM

'LDAP://OU=Users,DC=fr,DC=corp,DC=local'"

//lance la recherche dans LDAP
Message("Recherche les comptes dans Active Directory...")

HDécritConnexion("ADSI",UserADSI,PasswordADSI,ipADSI,"","ADsDSOObject",hOLec
ture)
Résultat = HOuvreConnexion("ADSI")
SI HExécuteRequêteSQL(sdADSI,"ADSI",hRequêteSansCorrection,Requete) ALORS
HLitPremier(sdADSI)
TANTQUE PAS HEnDehors(sdADSI)
TableAjouteLigne(tbl_User,sdADSI.sn,sdADSI.givenName)
HLitSuivant(sdADSI)
FIN
SINON
Erreur(HErreurInfo(hErrMessage))
FIN
HFermeConnexion("ADSI")
Message()

//--------------------------------------------------------------------------
--------------------
>
Posté le 02 juin 2005 - 14:56
C'est exactement le problème sur lequel je suis tombé.....avec ce code
Sur mon PC et d'autre no problème d'autre ce message
c'est pour cela que j'ai decidé de passer par LDAP et plus MDAC

"syl" a écrit dans le message de
news:429ed6a6$1@news.pcsoft.fr...



Je viens d'essayer le code, mais j'ai un probleme au niveau de la requete.

j'ai comme erreur : Erreur de l'accès OLE DB, numéro d'erreur 170129.

Si tu as une petite idée au cas où, pour ma part, je fais essayer de voir

ce qui ne va pas.

Sinon, ca décrit quoi ce code : 'LDAP://OU=Users,DC=fr,DC=corp,DC=local'

Syl



Posté le 02 juin 2005 - 15:44
C'est l'endroit où tu veux commencer ta recherche. cad l'arborescence d'Active Directory sur laquelle tu veux effectuer ta requête.

'LDAP://' -> c le protocole
'OU=Users' -> c l'OU des users (OU = Organization Unit) Tu peut avoir d'autres OU dans ton arborescence. ex : OU=Bordeaux
'DC=fr,DC=corp,DC=local' -> c ton nom de domaine (fr.corp.local)

Pour Mdac moi je n'ai jamais eut de problèmes et mon appli est déployée sur plus de 150 postes. Sinon si tu veux pousser dans l'exploitation de l'AD avec Windev moi je me sers aussi des classes .NET (mais cela implique que le .NET Framework soit installé)
Posté le 02 juin 2005 - 15:52
Tu as du pot alors et commen arrive tu a écrire dans les champs ?

"Julien SIMON" <julien.simon@alvea.fr> a écrit dans le message de
news:429ee4dc$1@news.pcsoft.fr...


C'est l'endroit où tu veux commencer ta recherche. cad l'arborescence

d'Active Directory sur laquelle tu veux effectuer ta requête.

'LDAP://' -> c le protocole
'OU=Users' -> c l'OU des users (OU = Organization Unit) Tu peut avoir

d'autres OU dans ton arborescence. ex : OU=Bordeaux
'DC=fr,DC=corp,DC=local' -> c ton nom de domaine (fr.corp.local)

Pour Mdac moi je n'ai jamais eut de problèmes et mon appli est déployée

sur plus de 150 postes. Sinon si tu veux pousser dans l'exploitation de l'AD
avec Windev moi je me sers aussi des classes .NET (mais cela implique que le
..NET Framework soit installé)

Posté le 02 juin 2005 - 16:15
Je n'utilise Mdac que pour lire dans AD, pour les créations ou les mises a jour j'utilise .NET (system.directoryservices)
Posté le 02 juin 2005 - 16:42
C'est pourquoi je préfére LDAP car tu fais du Read/Write donc 1 seule
méthode
Je trouve que c'est plus simple Mais c'est un avis strictement perso

"Julien SIMON" <julien.simon@alvea.fr> a écrit dans le message de
news:429eec3f$1@news.pcsoft.fr...

Je n'utilise Mdac que pour lire dans AD, pour les créations ou les mises a

jour j'utilise .NET (system.directoryservices)
>
Posté le 02 juin 2005 - 17:28
Merci beaucoup de votre aide.
Je vais essayer de résoudre mon problème avec vos idées.

Cordialement,

Syl