我通过LDAP访问AD,代码如下,跑到Set rs = Com.Execute时出错,错误是Table does not exist,谁能解释这个问题?马上给分,在线等。
Dim con As New Connection, rs As New Recordset
Dim adVariant
Dim i 'Used for counter
Dim j 'Used for counter
Dim Com As New Command
Dim strDomain As String
Dim strPassword As String
 
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
con.Properties("User ID") = strDomain + "\" + strUserID
con.Properties("Password") = strPasswordcon.Open "Active Directory Provider"
 
' Create a command object on this connection.
Set Com.ActiveConnection = con
 
' Set the query string.
Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
     (objectClass=*);ADsPath, objectclass;base"
 
' Set search preferences.
Com.Properties("Page Size") = 1000
Com.Properties("Timeout") = 30 'seconds
 
' Execute the query.
Set rs = Com.Execute
 
' Navigate the record set.
rs.MoveFirst
While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        If rs.Fields(i).Type = adVariant And Not (IsNull(rs.Fields(i).Value)) Then
            Debug.Print rs.Fields(i).Name, " = "
            For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
                Debug.Print rs.Fields(i).Value(j), " # "
            Next j
        Else
            Debug.Print rs.Fields(i).Name, " = ", rs.Fields(i).Value
        End If
    Next i
    rs.MoveNext
Wend
 
rs.MoveLast
Debug.Print "No. of rows = ", rs.RecordCount

解决方案 »

  1.   

    可能是你下面的参数设置错误造成:
    Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
         (objectClass=*);ADsPath, objectclass;base"
    参考:
    http://support.microsoft.com/kb/q187529/
      

  2.   

    不太懂这个
    楼主参考
    http://support.microsoft.com/default.aspx?scid=kb;en-us;Q328024http://searchwincomputing.techtarget.com/tip/0,289483,sid68_gci1089792,00.html
      

  3.   

    将Set rs = Com.Execute换成下面
    rs.Open Com, , adOpenKeyset, adLockOptimistic, adCmdText
      

  4.   

    以上的都不行,我也知道问题可能出在:
    Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
         (objectClass=*);ADsPath, objectclass;base"
    但到底应该怎么写这句话呢?是否域服务器上面做设置?域服务器是Windows NT
      

  5.   

    "<LDAP://服务器名/DC=域名,DC=Fabrikam,DC=com>;(objectClass=*);ADsPath, objectclass;base"
      

  6.   

    "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;(objectClass=*);ADsPath, objectclass;base"
                 ||
                 \/
    MyServer.MyDomain.Fabrikam.com你的本地网络怎么访问的,就怎么写法。
      
      

  7.   

    我的服务器是cic231,域名是cic23,可以在命令行输入“\\cic231”访问服务器,请帮我看看以下的对吗?
    <LDAP://cic231/DC=cic23,DC=fabrikam,DC=com>;(objectClass=*);ADsPath,objectclass;base
      

  8.   

    <LDAP://cic231/DC=cic23,DC=fabrikam,DC=com>;(objectClass=*);ADsPath,objectclass;base后面的两个DC不应该删除掉么?
      
      

  9.   

    删除掉还是不行,需要在域服务器上做点配置吗?我现在用的域服务器装的是Windows2000 Server