Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

LDAP mit Access auslesen

296 views
Skip to first unread message

Guido Kuhlmann

unread,
Nov 17, 2006, 4:51:52 AM11/17/06
to
Hallo NG,

wir würden gerne unser AD mittels LDAP auslesen und Infos in einer Access-DB
ablegen/importieren.
Hat das schon mal einer gemacht. Such schon geraume Zeit, finde jedoch nicht
zu diesem Thema (kann auch sein, das ich falsch Suche ;-))

Danke!


Guido


Henry Habermacher [MVP Access]

unread,
Nov 17, 2006, 5:10:10 AM11/17/06
to
Hallo Guido

Schwer zu glauben! Nun ja, groups.google.de im IE eingeben, dann die
Suchbegriffe "access ldap auslesen". Der zweite Treffer bringt Dich auf
einen Code, den ich hier schon mehrmals gepostet habe, um das Active
Directory per LDAP direkt auszulesen (über ein ADO Recordset).
Einfachheitshalber hier nochmals, aber nur wenn Du versprichst, das zuerst
nochmals zu versuchen - das Suchen meine ich.

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org

Public Function searchInAD( _
Optional sAMAccountName As Variant = Null, _
Optional sn As Variant = Null, _
Optional givenname As Variant = Null, _
Optional department As Variant = Null, _
Optional displayname As Variant = Null)


Dim objconn As Object
Dim objCommand As Object
Dim objRoot As Object
Dim objDomain As Object
Dim objRS As Object
Dim strDomain As String
Dim strSQL As String
Dim varSearch As Variant


On Error GoTo PROC_ERR


'ADO Connection ins AD aufbauen
Set objconn = CreateObject("ADODB.Connection")
objconn.Provider = "ADsDSOObject"
objconn.Open "Active Directory Provider"


'Command Objekt instanziieren und definieren
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objconn


'Pfad ins AD holen
Set objRoot = GetObject("LDAP://rootDSE")
strDomain = objRoot.Get("defaultNamingContext")
Set objDomain = GetObject("LDAP://" & strDomain)


'Query aufbauen
strSQL = "SELECT displayname, cn, " & _
"sAMAccountName, company, givenname, " & _
"sn, l, mail, department, telephoneNumber, " & _
"facsimileTelephoneNumber, " & _
"physicalDeliveryOfficeName" & _
" FROM 'LDAP://" & strDomain & "'" & _
" WHERE "


'Bedingung aufbauen
varSearch = Null
If Not IsNull(sAMAccountName) Then
varSearch = "sAMAccountName='" & sAMAccountName & "'"
End If
If Not IsNull(sn) Then
varSearch = (varSearch + " AND ") & _
"sn='" & sn & "*'"
End If
If Not IsNull(givenname) Then
varSearch = (varSearch + " AND ") & _
"givenname='" & givenname & "*'"
End If
If Not IsNull(department) Then
varSearch = (varSearch + " AND ") & _
"department='" & department & "*'"
End If
If Not IsNull(displayname) Then
varSearch = (varSearch + " AND ") & _
"displayname='" & displayname & "*'"
End If


'SQL Statement zusammensetzen
If Not IsNull(varSearch) Then
strSQL = strSQL & varSearch
End If


'und Befehl dem CommandObject übergeben
objCommand.CommandText = strSQL


'Query ausführen
Set objRS = objCommand.Execute


'Gefundene Einträge abarbeiten
If objRS.RecordCount > 0 Then
With objRS
.MoveFirst
While Not .EOF
Debug.Print "DisplayName = " & Nz(!displayname)
Debug.Print "Alias = " & Nz(!cn)
Debug.Print "PID = " & Nz(!sAMAccountName)
Debug.Print "BU = " & Nz(!company)
Debug.Print "FirstName = " & Nz(!givenname)
Debug.Print "LastName = " & Nz(!sn)
Debug.Print "Location = Nz(!l)"
Debug.Print "EMail = " & Nz(!mail)
Debug.Print "Departement = " & Nz(!department)
Debug.Print "Phone = " & Nz(!telephoneNumber)
Debug.Print "Fax = " & Nz(!facsimileTelephoneNumber)
Debug.Print "Office = " & Nz(!physicalDeliveryOfficeName)
.MoveNext
Wend
.Close
End With
End If


PROC_EXIT:
Set objRS = Nothing
Set objconn = Nothing
Exit Function


PROC_ERR:
MsgBox "Fehler beim Lesen des AD. Fehler-Nr. " & _
Err.Number & vbCrLf & vbCrLf & _
Err.Description & vbCrLf & vbCrLf & _
"Zusatzinformation: " & vbCrLf & _
"Domain = " & strDomain & vbCrLf & _
"Command: " & vbCrLf & strSQL
Resume PROC_EXIT
End Function

Stefan Hoffmann

unread,
Nov 17, 2006, 5:09:46 AM11/17/06
to
tach Guido,

Guido Kuhlmann schrieb:


> Hat das schon mal einer gemacht. Such schon geraume Zeit, finde jedoch nicht
> zu diesem Thema (kann auch sein, das ich falsch Suche ;-))

Jo, stimmt mit Google und

ldap group:microsoft.public.de.access

bzw.

ad group:microsoft.public.de.access

bekommst du ziemlich alles was du suchst.

mfG
--> stefan <--

--
Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Peter Doering

unread,
Nov 17, 2006, 5:13:02 AM11/17/06
to

Jens Schilling

unread,
Nov 17, 2006, 5:28:04 AM11/17/06
to
Hallo, Guido

Neben den Antworten, die Du hier bereits bekommen hast, hier noch ein Link
zum Thema :

http://www.rlmueller.net

Gruss
Jens


Henry Habermacher [MVP Access]

unread,
Nov 17, 2006, 5:44:10 AM11/17/06
to
Danke Jens

Jetzt geht dieser Link wieder. Weil in der Regel kam dann immer nach meinem
Posting die Frage, ob's denn nirgends ein vermünfriges Verzeichnis der AD
User/Computer Properties gebe und die Excel Datei von Richard Müller war
nicht mehr verfügbar.

Hier gleich mal der Link, damit diese Frage ausbleibt:

http://www.rlmueller.net/References/ADUCProperties.xls

Gruss
Henry

Jens Schilling

unread,
Nov 17, 2006, 6:01:46 AM11/17/06
to
Hallo, Henry

> Jetzt geht dieser Link wieder.

Hab' ich gar nicht bemerkt - ich habe in meinen AccessResources als letzten
Besuch der HP ( und den Test der Downloads ) den 14.7. dokumentiert - da
lief also noch alles; vielleicht wurde nur zwischenzeitlich dort ein wenig
gebastelt.

> Hier gleich mal der Link, damit diese Frage ausbleibt:
>
> http://www.rlmueller.net/References/ADUCProperties.xls

Den konkreten Link habe ich absichtlich nicht gepostet ;-)
Ich meine, die HP ist es wert, mal gründlich erforscht zu werden.

Gruss
Jens


0 new messages