为什么recordset.RecordCount等于1但recordset.EOF和recordset.BOF都等于True

res*_*res 2 vbscript

我有一个非常简单的查询,只返回一条记录.当我尝试从唯一记录中的唯一列中取出值时,我得到"要么BOF或EOF为True,要么当前记录已被删除.请求的操作需要当前记录." 这里发生了什么?如果RecordCount为0并且我已经验证记录集确实包含记录,则导致错误的代码甚至不会执行.

代码如下.尝试设置strDN时抛出错误.这很简单,但我无法弄清楚我哪里出错了.

编辑包括命令

<LDAP://DC=something,DC=com>;(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(employeeID=01234567));distinguishedName;subtree

Set adoRecordset = adoCommand.Execute


    If adoRecordset.RecordCount > 0 Then


        strDN = adoRecordset.Fields("distinguishedName").Value

        Set objUser = GetObject("LDAP://" & strDN)

        objGroup.add(objUser.ADsPath)

    End if
Run Code Online (Sandbox Code Playgroud)

Fio*_*ala 6

recordcount属性将光标留在记录集的末尾,因此您无法获取记录(eof = true),您必须先移动.使用不同的游标类型,因为默认游标类型仅为向前:

'' Assign cursorType that allows forward and backward movement.
adoRecordset.cursorType = 3 ''adOpenStatic
Run Code Online (Sandbox Code Playgroud)

请参阅https://www.w3schools.com/asp/prop_rs_cursortype.asp