Dialek LDAP
Dialek LDAP adalah format untuk pernyataan kueri yang menggunakan sintaks filter pencarian LDAP. Gunakan pernyataan kueri LDAP dengan antarmuka pencarian ADSI berikut:
- Antarmuka ActiveX Data Object (ADO), yang merupakan antarmuka Automation yang menggunakan OLE DB.
- OLE DB, yang merupakan sekumpulan antarmuka C/C++ untuk mengkueri database.
- IDirectorySearch, yang merupakan antarmuka C/C++ untuk Direktori Aktif.
String dialek LDAP terdiri dari empat bagian yang dipisahkan oleh titik koma (;).
Nama khusus dasar. Misalnya:
<LDAP://DC=Fabrikam,DC=COM>
Filter pencarian LDAP. Untuk informasi selengkapnya tentang filter pencarian, lihat Sintaks Filter Pencarian.
Nama tampilan LDAP dari atribut yang akan diambil. Beberapa atribut dipisahkan oleh koma.
Menentukan cakupan pencarian. Nilai yang valid adalah "base", "onelevel", dan "subtree". Cakupan yang ditentukan dalam string kueri LDAP mengambil alih cakupan pencarian apa pun yang ditentukan dengan properti "SearchScope" dari objek Perintah ADO.
Berikut ini adalah contoh kode dialek LDAP di ADSI yang mencari semua objek dalam subtree.
"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"
Tidak semua opsi pencarian (ukuran halaman pencarian, misalnya) dapat diekspresikan dalam dialek LDAP, jadi Anda harus mengatur opsi sebelum eksekusi kueri aktual dimulai.
Contoh kode berikut menunjukkan cara menggunakan kueri 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
Untuk detail tentang sintaks kueri, lihat Sintaks Filter Pencarian.