Ich habe dieses Forum und einige Google Suchergebnisse bereits
abgegrast, kann aber keine befriedigenden VBA-Funktion finden, mit der
ich das Active Directory auslesen kann.
Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.
Besten Dank im voraus
Gruß Andre
<andres...@yahoo.de> schrieb im Newsbeitrag
news:1115223048.9...@o13g2000cwo.googlegroups.com...
Hi @all,
Ich habe dieses Forum und einige Google Suchergebnisse bereits
abgegrast, kann aber keine befriedigenden VBA-Funktion finden, mit der
ich das Active Directory auslesen kann.
Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.
Das ActiveDirectory ist NICHT das aktuelle Verzeichnis, oder?
Deine Angabe ist so konkret als wenn ich einem Taxifahrer sage: Ich wohne in
Dortmund, bring mich nach Hause
Gruß
Uli
Ulrich Haarmeyer:
> Das ActiveDirectory ist NICHT das aktuelle Verzeichnis, oder?
Der war gut!
Z.B.
http://www.microsoft.com/windowsserver2003/technologies/directory/activedirectory/default.mspx
(Link in eine Zeile)
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
> kann aber keine befriedigenden VBA-Funktion finden, mit der
> ich das Active Directory auslesen kann.
Klaus O hat neulich dazu den folgenden Link gepostet:
http://www.devx.com/vb2themax/Tip/19289
Was reicht Dir daran nicht?
> Ich habe dieses Forum und einige Google Suchergebnisse bereits
> abgegrast, kann aber keine befriedigenden VBA-Funktion finden,
> mit der ich das Active Directory auslesen kann.
Das könnte möglicherweise evtl. daran liegen, dass es diese Funktion
nicht gibt. ;-)
Da du uns verschweigst, was du genau auslesen willst, wirst du
dich nochmal bei Google auf die Suche machen müssen. Das Stichwort
"ADSI" könnte dir dabei helfen.
Gruß
Phil
--
Bitte verwendet für Fragen zu Access mit DBMS-Server-Backends
die Newsgroup microsoft.public.de.access.clientserver! Danke!
Richtig zitieren im Usenet -> http://got.to/quote
"Ulrich Haarmeyer" <uli1...@hotmail.com> schrieb im Newsbeitrag
news:uWfmTWMU...@TK2MSFTNGP14.phx.gbl...
Das aktuelle Verzeichnis (=Arbeitsverzeichnis) lässt sich mit API
GetCurrentDirectory() ermitteln:
' -------------------------------------------------------------
' API's
' -------------------------------------------------------------
Private Declare Function GetCurrentDirectory Lib "kernel32.dll" Alias
"GetCurrentDirectoryA" ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
Private Sub test_click()
MsgBox fGetCurrentDir
End Sub
' -------------------------------------------------------------
' Function's
' -------------------------------------------------------------
Private Function fGetCurrentDir() As String
' das aktuelle Verzeichnis (Arbeitsverzeichnis) ermitteln
Dim lpBuffer As String
lpBuffer = String(1024, Chr(0))
If (GetCurrentDirectory(1024, lpBuffer) <> 0) Then
fGetCurrentDir = Left(lpBuffer, InStr(1, lpBuffer, Chr(0)) - 1)
End If
End Function
Gruss Johann
-----
m&p supportpages, http://members.aon.at/millpartner
quoting Johann Pumhösl <aon.91...@aon.at>:
> Das aktuelle Verzeichnis (=Arbeitsverzeichnis) lässt sich mit API
> GetCurrentDirectory() ermitteln:
Oder ganz einfach mittels:
MsgBox CurDir
Aber darum ging es hier wohl nicht, sondern um das ActiveDirectory und der
Zugriff über LDAP
Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
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
Bitte stelle Deinen Realnamen ein, danke
quoting andres...@yahoo.de <andres...@yahoo.de>:
> Bitte postet die Funktion, oder schreibt mir, wo ich sie finde.
Meinst Du diese, die ich hier schon 2 mal gepostet habe?
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
Danke für die Funktion.
Jetzt muss ich nur noch rausfinden, welche Feldnamen das Active
Directory bereitstellt.
Gruß Andre
P.S.
Was den Realname betrifft: Mein Name ist Andre Stein. Bei allen
bisherigen Postings wurde der Name auch korrekt mitgegeben. Habe mein
Google-Konto geprüft. Auch da ist alles korrekt eingetragen. Ich habe
keine Ahnung, warum plötzlich meine E-Mail-Adresse als Realname
ausgegeben wird.
ActiveDirectory und der Zugriff über LDAP natürlich.
Gruß Andre
quoting andres...@yahoo.de <andres...@yahoo.de>:
> Danke für die Funktion.
> Jetzt muss ich nur noch rausfinden, welche Feldnamen das Active
> Directory bereitstellt.
Eigentlich wollte ich dich auf www.rlmueller.net schicken, aber die Seite
ist gerade "under construction". Die Datei findest Du dort aber noch, die
das eingermassen übersichtlich auflistet, was standardmässig drin ist:
http://www.rlmueller.net/References/PropertyMethods.xls
Aber Achtung: Welche Felder es wirklich gibt, hängt von der Implementation
des AD/LDAP ab und kann von System zu System unterschiedlich sein.
Genauere Informationen findest Du beim Hersteller. Bei MS sind diese AFAIK
nirgends so sauber aufgelistet. Wenn Du aber davon ausgehen kannst, dass bei
Euch ein Standard AD installiert ist, welches über das Standard
UserInterface gepflegt wird, dann dürfte folgender Link helfen (Mappings der
Felder des UIs auf das AD)
http://msdn.microsoft.com/library/en-us/ad/ad/active_directory_user_interface_mappings.asp
HTH
die Funktion ist super, danke!
Hab allerdings die Abfrage um Anrede und Beschreibung erweitert:
'Query aufbauen
strSQL = "SELECT displayname, cn, " & _
"sAMAccountName, company, givenname, " & _
"sn, l, mail, department, telephoneNumber, " & _
"facsimileTelephoneNumber, " & _
"physicalDeliveryOfficeName, title, description " & _
" FROM 'LDAP://" & strDomain & "'"
' Ausgabe
Debug.Print "Anrede = " & objRS!Title
Debug.Print "Beschreibung = " & objRS!Description
Leider funktioniert das mit der Beschreibung nicht so richtig. Ich
bekomm immer einen Laufzeitfehler "Typen unverträglich", hab aber keine
Ahnung, was da nicht passt. Es soll doch einfach nur der Inhalt von
objRS!Description ausgegeben werden!
Hast du (oder jemand anderer) vielleicht eine Lösung?
--
stefacht
------------------------------------------------------------------------
stefacht's Profile: http://www.msusenet.com/member.php?userid=3365
View this thread: http://www.msusenet.com/t-1870405264
Bitte verwende hier den vollen Realnamen
quoting stefacht <stefach...@no-mx.msusenet.com>:
> Debug.Print "Beschreibung = " & objRS!Description
>
> Leider funktioniert das mit der Beschreibung nicht so richtig. Ich
> bekomm immer einen Laufzeitfehler "Typen unverträglich", hab aber
> keine Ahnung, was da nicht passt. Es soll doch einfach nur der Inhalt
> von objRS!Description ausgegeben werden!
>
> Hast du (oder jemand anderer) vielleicht eine Lösung?
objRS!Description ist ein Variant vom Typ Array (findest Du im Direktfenster
mittels VarType(objRS!Description) raus.
Das heisst dieses Feld kann mehrere Elemente beinhalten (in der Regel ist es
im AD nur eines, muss aber nicht sein).
Wenn Du das auslesen willst, machst Du folgendes:
- zuerst dieses Feld einer Variablen vom Typ Variant zuweisen, damit Du an
die einzelnen Elemente rankommst
- danach die einzelnen Elemente des Arrays über LBound() und UBound()
auslesen.
Das könnte etwa so aussehen:
Dim I As Long
Dim arrDescription As Variant
...
arrDescription = objRS!Description
If VarType(arrDescription) And vbArray = vbArray Then
For I = LBound(arrDescription) To UBound(arrDescription)
Debug.Print "Description)" & I & ") = " & arrDescription(I)
Next
Else
Debug.Print "Description = " & arrDescription
End If
-----
Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
einstellen, dass er immer statt dem nickname verwendet wird?
Das klingt danach, als würdest Du uns noch etwas erhalten bleiben :)
Allerdings kann ich Deine Frage für den von Dir benutzten Zugang leider
nicht beantworten.
Allerdings möchte ich Dir dann einen vernünftigen Newsreader[1]
empfehlen, damit Du das ganze nicht online machen musst und das ganze
etwas komfortabler hast.
Solltest Du Dir noch weitere Newsreader anschauen wollen, hätte ich hier
noch ein paar Alternativen:
<Werbetrommel>
Forte Agent
http://www.forteinc.com/main/homepage.php
Mozilla Thunderbird
http://www.mozilla.org/products/thunderbird/
oder Gravity
http://gravity.tbates.org/super.html
</Werbetrommel>
HTH
Greetinx aus Kiel
Reiner
P.S.: Falls Du auch noch Interesse (als Neuling) hast, Dir ein paar
Grundbegriffe zum Usenet durchzulesen, findest Du hier einige nette
Beschreibungen: http://einklich.net/usenet/rules.htm
Fußnote(n):
===========
[1] Programm: http://www.40tude.com/dialog/
Anleitung: http://www.gaehn.org/software/40tude-dialog/tutorial/
--
Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts.
(Albert Einstein)
quoting stefacht <stefach...@no-mx.msusenet.com>:
> Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
> einstellen, dass er immer statt dem nickname verwendet wird?
Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
eingegeben hast. Dann erscheint auch der Realname. So einfach geht das ;-)
Gruss
Henry Habermacher [MVP Access] wrote:
> quoting stefacht <stefach...@no-mx.msusenet.com>:
>
>> Bin neu in dem Forum: wo kann ich den realname eingeben bzw.
>> einstellen, dass er immer statt dem nickname verwendet wird?
>
> Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
> eingegeben hast. Dann erscheint auch der Realname. So einfach geht das ;-)
In seinem Fall nicht ;-)
Er postet ueber ein BBS-Usenet-Gateway (msusenet.com). Siehe
http://www.msusenet.com/showthread.php?t=1870405264&page=2&pp=10
Post 16 ;-) Er muesste schon seinen Nick aendern und das lassen viele Foren
nicht zu.
Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
quoting Peter Doering <nos...@doering.org>:
>> Du sollst eben den Realnamen im Feld eingeben, in dem Du den Nickname
>> eingegeben hast. Dann erscheint auch der Realname. So einfach geht
>> das ;-)
>
> In seinem Fall nicht ;-)
>
> Er postet ueber ein BBS-Usenet-Gateway (msusenet.com). Siehe
> http://www.msusenet.com/showthread.php?t=1870405264&page=2&pp=10
> Post 16 ;-) Er muesste schon seinen Nick aendern und das lassen viele
> Foren nicht zu.
Genau das habe ich doch geschrieben: "im Feld Nickname den Realname
eingeben."