[VB6] ADSI + LDAP + SQL-Dialekt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [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


    Quellcode

    1. Private Function GetAllAccounts()
    2. Dim Base$, Filter$, Domain$, Depth$, Query$, iElement%, Attribs$
    3. cnt_Accounts = 0
    4. Base = "<" & "LDAP://xxxxxxxxxxxxxxxx" & ">"
    5. Filter = "(&(objectCategory=person)(objectClass=user))"
    6. Attribs = "name"
    7. Depth = "subTree"
    8. Query = Base & ";" & Filter & ";" & Attribs & ";" & Depth
    9. Connection.Open "Data Source =Acitive Directory Provider; Provider=ADsDSOObject"
    10. Set Recordset = Connection.Execute(Query)
    11. ReDim Account(0) As User
    12. With Recordset
    13. Do While Not .EOF
    14. iElement = IIf(Account(0).Number = "", 0, iElement + 1)
    15. ReDim Preserve Account(iElement) As User
    16. Account(iElement).Number = Recordset("name")
    17. .MoveNext
    18. cnt_Accounts = cnt_Accounts + 1
    19. Loop
    20. End With
    21. ReDim Preserve Account(cnt_Accounts)
    22. End Function
    Alles anzeigen


    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

    Quellcode

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


    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
  • 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

    Quellcode

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


    also

    Quellcode

    1. recAD.Open "Select givenName, telefonNumber, sn, mail " & _
    2. "FROM 'LDAP://DC=treuhand,DC=de' " & _
    3. "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
  • 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

    Quellcode

    1. Dim Base$, Filter$, Domain$, Depth$, Query$, iElement%, Attribs$
    2. cnt_Accounts = 0
    3. Base = "<" & "LDAP://XXXXXX" & ">"
    4. Filter = "(&(objectClass=user)(name=ch27))"
    5. Attribs = "telephoneNumber"
    6. Depth = "subTree"
    7. Query = Base & ";" & Filter & ";" & Attribs & ";" & Depth
    8. Connection.Open "Data Source =Acitive Directory Provider; Provider=ADsDSOObject"
    9. Set Recordset = Connection.Execute(Query)
    10. ReDim Account(0) As User
    11. With Recordset
    12. Do While Not .EOF
    13. iElement = IIf(Account(0).Number = "", 0, iElement + 1)
    14. ReDim Preserve Account(iElement) As User
    15. Account(iElement).Number = Recordset("telephoneNumber")
    16. List1.AddItem Account(iElement).Number
    17. .MoveNext
    18. cnt_Accounts = cnt_Accounts + 1
    19. Loop
    20. End With
    21. ReDim Preserve Account(cnt_Accounts)
    22. Set Connection = Nothing
    23. Set Recordset = Nothing
    Alles anzeigen