LDAP Query of manager and update manager

Posted on 2008-10-24
Last Modified: 2013-12-24
I'm on a quest to update an employee's supervisor in AD.

I've got the part where we're querying the user's manager all set. But as soon as I query the adspath of the manager to put that into the user's manager field in their AD record, I get an error 80005008 at Line 49 which is:
            if usrmgr <> "" then usr.put "manager", usrmgr
Any ideas why this would be happening?

Call Run_SetManager

Function Run_SetManager

set conn = CreateObject("ADODB.Connection")

set rsExch = CreateObject("ADODB.Recordset")

set rsADUsr = CreateObject("ADODB.Recordset")

set rsADMGR = CreateObject("ADODB.Recordset")

Set oCmd = CreateObject("ADODB.Command")

Set oCmd1 = CreateObject("ADODB.Command")

conn.Open "Data Source=Active Directory Provider;Provider=ADsDSOObject"

uname = inputbox("Enter the FULL NAME of the user to modify:", "Enter Username")

If uname = "exit" Or uname = "" Or uname = "Exit" Then 

Exit Function 

End If 

if uname <> "" then

	strADOQuery = "SELECT adspath, manager, title from 'LDAP://pathtodomain'' WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"

	oCmd.ActiveConnection = conn

	oCmd.Properties("SearchScope") = 2

	oCmd.CommandText = strADOQuery


	set rsADUsr = oCmd.Execute

	if rsADUsr.RecordCount = 0 then msgbox "Username not found."

	if rsADUsr.RecordCount > 1 then msgbox "Multiple names found. This script can't help you."

	if rsADUsr.RecordCount = 1 then

		set usr = GetObject(rsADUsr.Fields("ADsPath"))

		if isnull(rsADUsr.Fields("manager")) = true then current = ""		

		if isnull(rsADUsr.Fields("manager")) = false then current = rsADUsr.Fields("manager")

		URL = inputbox("DO NOT PRESS CANCEL. PRESSING CANCEL WILL ERASE THIS ATTRIBUTE." & vbcrlf & vbcrlf & "Change Manager for " & uname & " to:", "Change Manager")

				strADOQueryMGR = "SELECT adspath from 'LDAP://pathtodc' WHERE objectCategory='person' AND objectClass='user' AND name = '" & URL & "'"

				oCmd1.ActiveConnection = conn

				oCmd1.Properties("SearchScope") = 2

				oCmd1.CommandText = strADOQueryMGR


				set rsADMGR = oCmd1.Execute

				if rsADMGR.RecordCount = 0 then msgbox "Manager not found."

				if rsADMGR.RecordCount > 1 then msgbox "Multiple managers found. This script can't help you."

				if rsADMGR.RecordCount = 1 Then 

					set usrmgr = rsADMGR.Fields("adspath")

				end if

		if usrmgr <> "" then usr.put "manager", usrmgr

		if usrmgr = "" then usr.Putex 1, "manager", ""


		msgbox "Manager Update Successful"

		set usr = nothing

	end if

end If


set ocmd = nothing

set ocmd1 = nothing

set rsExch = nothing

set rsADUsr = Nothing

set rsADMGR = nothing

set conn = nothing

End Function

Open in new window

Question by:ksb-sys
  • 2
LVL 70

Accepted Solution

Chris Dent earned 125 total points
ID: 22802579

Hey :)

Add distinguishedName into here:

>         strADOQuery = "SELECT adspath, manager, title from 'LDAP://pathtodomain''
> WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"


strADOQuery = "SELECT adspath, manager, title, distinguishedName from 'LDAP://pathtodomain' " &_
  "WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"

Then change this:

> set usrmgr = rsADMGR.Fields("adspath")


usrmgr = rsADMGR.Fields("distinguishedName")

ADSPath includes LDAP:// which isn't valid for the manager field. Set is unnecessary as it's just a string value, not an object.



Author Comment

ID: 22813269
Perfect! Thank yoU!!!
LVL 70

Expert Comment

by:Chris Dent
ID: 22813288

You're welcome :)


Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now