继续使用ASP,我有一个正弦代码,它为用户提供一个表单,显示当前保存在Active Directory中的数据,并让用户更新他们的一些细节。我已经尝试了所有的东西但是仍然没有得到错误
" ADODB.Command错误' 800a0e7d'
连接不能用于执行此操作。在此上下文中它是关闭的或无效的。
/editentry.asp,第31行"
无论如何,我的代码是L
<%@ Language=VBScript %>
<% response.Buffer = True
'Define the AD OU that contains our users
dim ADUser, user, firstname, lastname, email, telephonenumber, mobile
'This initializes all of our variables
user = request.querystring("account_name")
'This puts the value of the account_name into a variable
if len(user) = 0 then
'If the length of the username is equal to 0
response.write "Please supply a username in the query string"
elseif len(user) > 0 then
'Else is length of user is greater than 0
ADUser = "LDAP://OU=Staff,OU=Users,DC=Something,DC=internal"
' Make AD connection and run query
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.provider ="ADsDSOObject"
objCon.Properties("User ID") = "EXAMPLE\Testuser"
objCon.Properties("Password") = "TestUser1!"
objCon.Properties("Encrypt Password") = TRUE
objCon.open "Active Directory Provider"
Set objCom = CreateObject("ADODB.Command")
objCom.CommandText ="select ADsPath, givenName,sn,mail,telephonenumber,mobile,sAMAccountName FROM '"+ ADUser +"' where sAMAccountname='"& user & "'"
'objCom.Properties("searchscope") = ADS_SCOPE_ONELEVEL
Set objRS = objCom.Execute
' Loop over returned recordset and output HTML
Response.Write vbCrLf
Do While Not objRS.EOF Or objRS.BOF
Response.Write " <form action='editentry.asp?account_name=" + user + "' method='POST'>"
Response.Write "<p><label for='firstname'>Firstname</label><input type='text' id='firstname' value='" + objRS("givenName") +"' name='fname'></p>"
Response.Write "<p><label for='lastname'>Lastname</label><input type='text' id='lastname' value='" + objRS("sn") +"' name='lname'></p>"
Response.Write "<p><label for='mail'>E-Mail Address</label><input type='text' id='lastname' value='" + objRS("mail") +"' name='email'></p>"
Response.Write "<p><label for='mobile'>Mobile</label><input type='text' id='mobile' value='" + objRS("mobile") +"' name='mobile'></p>"
Response.Write "<p><label for='telephone'>Telephone Number</label><input type='text' id='email' value='" + objRS("telephonenumber") +"' name='telephonenumber'></p>"
Response.Write "<p><input type='hidden' id='subval' value='1' name='subval'></p>"
Response.Write "<p><input type='submit' name='submit'><input type='reset' name='reset'></p>"
Response.Write "</form>" + vbCrLf
objRS.MoveNext
Response.Flush
Loop
if isEmpty(request.form("subval"))=FALSE then
'Subval will contain 1 if the form is submitted, else it won't exist, so we can check the form has been submitted by reading it back
firstname = request.form("fname")
lastname = request.form("lname")
email = request.form("email")
mobile = request.form("mobile")
telephonenumber = request.form("telephonenumber")
Do While Not objRS.EOF
Set usr = GetObject(objRS.Fields("ADsPath").Value)
usr.Put "gjvenName", firstname
usr.Put "sn", lastname
usr.Put "mail", email
usr.Put "mobile", mobile
usr.Put "telephonenumber", telephonenumber
usr.SetInfo
objRS.MoveNext
loop
response.write "Entry has been updated "
end if
end if
' Clean up
objRS.Close
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
Set objCom = Nothing
%GT;
我不确定这里有什么问题
答案 0 :(得分:0)
分配命令对象的连接(在调用Execute函数之前),如下所示:
Set objCom.ActiveConnection = objCon