LDAP 方言

LDAP 方言是使用LDAP搜尋篩選語法查詢語句格式。 搭配下列 ADSI 搜尋介面使用 LDAP 查詢語句:

LDAP 方言字串是由分號分隔的四個部分所組成(;)。

  • 基底辨別名稱。 例如:

    <LDAP://DC=Fabrikam,DC=COM>
    
  • LDAP 搜尋篩選條件。 如需搜尋篩選的詳細資訊,請參閱 搜尋篩選語法

  • 要擷取之屬性的LDAP顯示名稱。 多個屬性會以逗號分隔。

  • 指定搜尋的範圍。 有效值為 「base」、“onelevel” 和 “subtree”。 LDAP 查詢字串中指定的範圍會覆寫 ADO Command 物件的 “SearchScope” 屬性所指定的任何搜尋範圍。

以下是 ADSI 中 LDAP 方言的程式代碼範例,可搜尋子樹中的所有物件。

"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"

並非所有搜尋選項(例如搜尋頁面大小)都可以在LDAP方言中表示,因此您必須在實際查詢執行開始之前設定選項。

執行LDAP查詢的範例程式代碼

下列程式代碼範例示範如何使用LDAP查詢

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") = strPassword

con.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

如需查詢語法的詳細資訊,請參閱 搜尋篩選語法

搜尋篩選語法

SQL 方言

使用 IDirectorySearch 介面搜尋

使用 ActiveX 資料物件搜尋

使用 OLE DB 搜尋