You are not logged in.

  • Login

1

Wednesday, December 14th 2005, 10:46am

[VB6] ADSI + LDAP + SQL-Dialekt

Hallo
ich brauche unbedingt eure hilfe.

es ist so... jeder User hat zum bsp. eine Nummber

zbsp. User :

IDNummer: vb010
givenName: Peter
sn: Meier

und ich habe mit einer Funktion alle IDNummern die im AD eingetragen sind, ermitteln.

das wäre die Funktion


VisualBasic Quellcode

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
Private Function GetAllAccounts()
    Dim Base$, Filter$, Domain$, Depth$, Query$, iElement%, Attribs$
    cnt_Accounts = 0
 
    Base = "<" & "LDAP://xxxxxxxxxxxxxxxx" & ">"
    Filter = "(&(objectCategory=person)(objectClass=user))"
    Attribs = "name"
    Depth = "subTree"
    Query = Base & ";" & Filter & ";" & Attribs & ";" & Depth
    Connection.Open "Data Source =Acitive Directory Provider; Provider=ADsDSOObject"
    Set Recordset = Connection.Execute(Query)
    ReDim Account(0) As User
 
    With Recordset
        Do While Not .EOF
            iElement = IIf(Account(0).Number = "", 0, iElement + 1)
            ReDim Preserve Account(iElement) As User
            Account(iElement).Number = Recordset("name")
            .MoveNext
            cnt_Accounts = cnt_Accounts + 1
        Loop
    End With
 
    ReDim Preserve Account(cnt_Accounts)
End Function


nun bräuchte ich von jeder IDNummer den Vornamen, Nachnamen, Emailadresse, Telefonnummer...etc...
ich habe mal gelesen das man alles hintereinander hängen kann, also so: Attribs = "givenName, telefonNumber, sn, mail", stimmt das?

habe auch eine Möglichkeit gesehen mit SQL

VisualBasic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
Set cnnAD = New ADODB.Connection 
  With cnnAD 
     .Provider = "AdsDsoObject" 
     ' Note use of adModeUnknown here! 
     .Mode = adModeUnknown 
     .Open 
  End With 
  Set recAD = New ADODB.Recordset 
'  recAD.Open "Select sAMAccountName,Description,ADsPath,Name " & 
  recAD.Open "Select sAMAccountName " & _ 
                     "FROM 'LDAP://DC=treuhand,DC=de' " & _ 
                     "WHERE objectCategory = 'person'", cnnAD


könnt ihr mir da bitte helfen? ich sitze schon seit tagen daran und googlen hat auch nichts gebracht.

es geht einfach darum das ich die IDNummer hab und einfach ein paar properties zu der Nummer brauche, da ja immer ein User dahinter steckt.

ich danke schonmal

2

Wednesday, December 14th 2005, 12:28pm

hallo.. bin nicht ganz so firm mit VB, aber verstehe nicht ganz dein problem..
die daten liegen in den spalten "givenName, telefonNumber, sn & mail?
Dann brauchst du doch nur den sql string zu ändern

statt

VisualBasic Quellcode

1
2
3
recAD.Open "Select sAMAccountName " & _
                     "FROM 'LDAP://DC=treuhand,DC=de' " & _
                     "WHERE objectCategory = 'person'", cnnAD


also

VisualBasic Quellcode

1
2
3
recAD.Open "Select givenName, telefonNumber, sn, mail " & _
                     "FROM 'LDAP://DC=treuhand,DC=de' " & _
                     "WHERE objectCategory = 'person'", cnnAD


EDIT: Ja, genau wie du gesagt hast. Einfach das attribs in deiner funktion bearbeiten.. hast du das schon ausprobiert?

Gruß.

d0n

3

Wednesday, December 14th 2005, 1:13pm

ja mit SQL.. hat eine schöne fehlermeldung gegeben.
aber die obere variante.... wie kann man da dann mehrere auswählen?

oder wenn man die infos von einem user braucht dann verwendet man doch einen filter

zbsp. objectCategory=person objextClass=user

und wie muss ich das machen ? name=vb010?

4

Wednesday, December 14th 2005, 1:24pm

ich hasse das zeug echt

ich probiere und probiere.. und nichts klapp... dauernd nur fehlermeldungen.. und ich muess selber irgendwie mit dem schlau werden.. habe ADSI etc noch nie verwendet

5

Wednesday, December 14th 2005, 1:31pm

JAAAAAAAAAAAAAAAAAAa es hat geklappt... juhuuii
naja wenigstens habe ich mein nachnamen ermittelt....
also klar ich kenn meinen nachnamen.. aber eben :oops: verweis auf active directory!!!! :P

6

Wednesday, December 14th 2005, 5:09pm

konntest du jetzt alles ermitteln, oder nur den nachnamen?
kannst deine lösung ja mal posten..
gruß d0n

7

Wednesday, December 14th 2005, 6:00pm

also

Vorname
Nachname
Emailadresse
Telefonnummer

bei Description gab es eine Fehlermeldung-> Type mismatch
finde ich jetzt einwenig komisch, hab dann mal den datentyp variant genommen.. und die fehlermeldung bleibt..
bei physicalDeliveryOfficeName kommt irgendwie gar nichts.. auch keine Fehlermeldung

VisualBasic Quellcode

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
Dim Base$, Filter$, Domain$, Depth$, Query$, iElement%, Attribs$
    cnt_Accounts = 0
 
    Base = "<" & "LDAP://XXXXXX" & ">"
    Filter = "(&(objectClass=user)(name=ch27))"
    Attribs = "telephoneNumber"
    Depth = "subTree"
    Query = Base & ";" & Filter & ";" & Attribs & ";" & Depth
    Connection.Open "Data Source =Acitive Directory Provider; Provider=ADsDSOObject"
    Set Recordset = Connection.Execute(Query)
    ReDim Account(0) As User
 
    With Recordset
        Do While Not .EOF
            iElement = IIf(Account(0).Number = "", 0, iElement + 1)
            ReDim Preserve Account(iElement) As User
            Account(iElement).Number = Recordset("telephoneNumber")
            List1.AddItem Account(iElement).Number
            .MoveNext
            cnt_Accounts = cnt_Accounts + 1
        Loop
    End With
 
    ReDim Preserve Account(cnt_Accounts)
 
    Set Connection = Nothing
    Set Recordset = Nothing

Similar threads

Social bookmarks