index was out of range

  • Thread starter Thread starter Hashim Ismail
  • Start date Start date
H

Hashim Ismail

Hi;
I am quering Active Directory and putting the results of users in the
listbox. Then the user can click on the listbox which should populate
the
textboxes with the fields from AD, which works fine as long as each
field has
a value but i get Index was out of range when one of the fields is
blank. I
am posting sample of the code here:

Dim lbBox As New ListBox
Dim txtName, txtMail, txtEmployeeID, txtEmployeeNo As New
TextBox
Dim objParent As New DirectorySearcher(Me.txtDomain.Text)

'Me.txtName.Text = " "
Dim cmdEdit As New Button


If Me.lbBox.SelectedItem = "" Then
MsgBox("Make a selection")


End If
objParent.Filter = "(&(objectCategory=user)(Name=" +
Me.lbBox.SelectedItem + "*))"
objParent.PropertiesToLoad.Add("cn")
objParent.PropertiesToLoad.Add("employeeID")
objParent.PropertiesToLoad.Add("employeeNumber")
objParent.PropertiesToLoad.Add("mail")
Dim colQueryResults As SearchResultCollection
colQueryResults = objParent.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults

'Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Me.lbBox.Items.Add(objResult.Properties("employeeID")(0))
Me.txtName.Text = (objResult.Properties("cn")(0))
Me.txtMail.Text = (objResult.Properties("mail")(0))
Me.txtEmployeeID.Text =
(objResult.Properties("employeeID")(0))
Me.txtEmployeeNo.Text =
(objResult.Properties("employeeNumber")(0))
Next
 
Actually here is rest of the code:

Imports System
Imports System.DirectoryServices


'Imports System.DirectoryServices.DirectorySearcher


Public Class Form1
Private MySearch As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdDisabled.Click
Dim objSearch As New DirectorySearcher()
Dim lbBox As New ListBox
Dim lblListbox As New Label
Dim txtDomain As New TextBox

Me.lblListbox.Text = "Dislabled Users: "
Me.lbBox.Items.Clear()
objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Console.WriteLine(objResult.Properties("cn")(0))
Next
End Sub

Private Sub DataGridView1_CellContentClick(ByVal sender As
System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Me.Close()

End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click


Dim objSearch As New DirectorySearcher()
Dim txtSearch As New TextBox
Dim lblListbox As New Label

Me.lblListbox.Text = "Active Users:"
Me.lbBox.Items.Clear()

objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
Next

End Sub

Private Sub txtSearch2_TextChanged(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles txtSearch.TextChanged

End Sub

Private Sub cmdSearch2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSearch2.Click
Me.lbBox.Items.Clear()
Me.lblListbox.Text = "Search Results:"
Dim objParent As New DirectorySearcher(Me.txtDomain.Text)
Dim txtSearch As New TextBox

If Me.txtSearch.Text = "" Then
MsgBox("Give me something to search")
End

End If

objParent.Filter = "(&(objectCategory=user)(userPrincipalName=" +
Me.txtSearch.Text + "*))"
objParent.PropertiesToLoad.Add("cn")
objParent.PropertiesToLoad.Add("employeeID")
objParent.PropertiesToLoad.Add("employeeNumber")
objParent.PropertiesToLoad.Add("mail")
Dim colQueryResults As SearchResultCollection
colQueryResults = objParent.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
If objResult.Properties("cn")(0) = "" Then
Me.lbBox.Items.Add("no record found")
End If
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Me.lbBox.Items.Add(objResult.Properties("employeeID")(0))
Next


End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Dim objSearch As New DirectorySearcher()
Dim txtSearch As New TextBox
Dim lblListbox As New Label



Me.lblListbox.Text = "Service Accounts:"
Me.lbBox.Items.Clear()

objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=user)(employeeID=service*)(!employeeNumber=temp))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults

Me.lbBox.Items.Add(objResult.Properties("cn")(0))

Next
End Sub

Private Sub cmdEdit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdEdit.Click
Dim lbBox As New ListBox
Dim txtName, txtMail, txtEmployeeID, txtEmployeeNo As New TextBox
Dim objParent As New DirectorySearcher(Me.txtDomain.Text)
'Me.txtName.Text = " "
Dim cmdEdit As New Button



objParent.Filter = "(&(objectCategory=user)(Name=" +
Me.lbBox.SelectedItem + "*))"
objParent.PropertiesToLoad.Add("cn")
objParent.PropertiesToLoad.Add("employeeID")
objParent.PropertiesToLoad.Add("employeeNumber")
objParent.PropertiesToLoad.Add("mail")
Dim colQueryResults As SearchResultCollection
colQueryResults = objParent.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults




'Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Me.lbBox.Items.Add(objResult.Properties("employeeID")(0))
If colQueryResults.Count = "null" Then

End If
Me.txtName.Text = (objResult.Properties("cn")(0))
Me.txtMail.Text = (objResult.Properties("mail")(0))
Me.txtEmployeeID.Text = (objResult.Properties("employeeID")(0))
Me.txtEmployeeNo.Text =
(objResult.Properties("employeeNumber")(0))

Next
'Me.txtName.Text = " "
'Me.txtName.Text = Me.lbBox.SelectedItem(("Name"(1)))

End Sub

Private Sub lbBox_MouseDoubleClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles lbBox.MouseDoubleClick
Dim lbBox As New ListBox
Dim txtName, txtMail, txtEmployeeID, txtEmployeeNo As New TextBox
Dim objParent As New DirectorySearcher(Me.txtDomain.Text)

'Me.txtName.Text = " "
Dim cmdEdit As New Button


If Me.lbBox.SelectedItem = "" Then
MsgBox("Make a selection")


End If
objParent.Filter = "(&(objectCategory=user)(Name=" +
Me.lbBox.SelectedItem + "*))"
objParent.PropertiesToLoad.Add("cn")
objParent.PropertiesToLoad.Add("employeeID")
objParent.PropertiesToLoad.Add("employeeNumber")
objParent.PropertiesToLoad.Add("mail")
Dim colQueryResults As SearchResultCollection
colQueryResults = objParent.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults

'Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Me.lbBox.Items.Add(objResult.Properties("employeeID")(0))
Me.txtName.Text = (objResult.Properties("cn")(0))
Me.txtMail.Text = (objResult.Properties("mail")(0))
Me.txtEmployeeID.Text = (objResult.Properties("employeeID")(0))
Me.txtEmployeeNo.Text =
(objResult.Properties("employeeNumber")(0))
Next
'Me.txtName.Text = " "
'Me.txtName.Text = Me.lbBox.SelectedItem(("Name"(1)))

End Sub

Private Sub lbBox_SelectedIndexChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles lbBox.SelectedIndexChanged



End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button2_MouseDoubleClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Button2.MouseDoubleClick

End Sub

Private Sub txtDomain_TextChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles txtDomain.TextChanged

End Sub

Private Sub txtMail_TextChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles txtMail.TextChanged

End Sub

Private Sub cmdUpdate_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdUpdate.Click

End Sub

Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
Dim objSearch As New DirectorySearcher()
Dim txtSearch As New TextBox
Dim lblListbox As New Label



Me.lblListbox.Text = "Service Accounts:"
Me.lbBox.Items.Clear()

objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2)(employeeID=Service*)(!employeeNumber=temp))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults

Me.lbBox.Items.Add(objResult.Properties("cn")(0))

Next
End Sub

Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub

Private Sub ActiveUsersToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ActiveUsersToolStripMenuItem.Click
Dim objSearch As New DirectorySearcher()
Dim txtSearch As New TextBox
Dim lblListbox As New Label

Me.lblListbox.Text = "Active Users:"
Me.lbBox.Items.Clear()

objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
Next

End Sub

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles txtSearch.TextChanged

End Sub

Private Sub cmdSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSearch2.Click
Me.lbBox.Items.Clear()
Me.lblListbox.Text = "Search Results:"
Dim objParent As New DirectorySearcher(Me.txtDomain.Text)
Dim txtSearch As New TextBox

If Me.txtSearch.Text = "" Then
MsgBox("Give me something to search")
End

End If

objParent.Filter = "(&(objectCategory=user)(userPrincipalName=" +
Me.txtSearch.Text + "*))"
objParent.PropertiesToLoad.Add("cn")
objParent.PropertiesToLoad.Add("employeeID")
objParent.PropertiesToLoad.Add("employeeNumber")
objParent.PropertiesToLoad.Add("mail")
Dim colQueryResults As SearchResultCollection
colQueryResults = objParent.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
If objResult.Properties("cn")(0) = "" Then
Me.lbBox.Items.Add("no record found")
End If
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Me.lbBox.Items.Add(objResult.Properties("employeeID")(0))
Next
End Sub

Private Sub DisabledUsersToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
DisabledUsersToolStripMenuItem.Click
Dim objSearch As New DirectorySearcher()
Dim lbBox As New ListBox
Dim lblListbox As New Label
Dim txtDomain As New TextBox

Me.lblListbox.Text = "Dislabled Users: "
Me.lbBox.Items.Clear()
objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults
Me.lbBox.Items.Add(objResult.Properties("cn")(0))
'Console.WriteLine(objResult.Properties("cn")(0))
Next
End Sub

Private Sub EnabledToolStripMenuItem1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
EnabledToolStripMenuItem1.Click
Dim objSearch As New DirectorySearcher()
Dim txtSearch As New TextBox
Dim lblListbox As New Label



Me.lblListbox.Text = "Service Accounts:"
Me.lbBox.Items.Clear()

objSearch.SearchRoot = New DirectoryEntry(Me.txtDomain.Text)
objSearch.Filter =
"(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(employeeID=Service*)(!employeeNumber=temp))"
objSearch.SearchScope = SearchScope.Subtree
objSearch.PropertiesToLoad.Add("cn")

Dim colQueryResults As SearchResultCollection
colQueryResults = objSearch.FindAll()

Dim objResult As SearchResult
For Each objResult In colQueryResults

Me.lbBox.Items.Add(objResult.Properties("cn")(0))

Next
End Sub
End Class
 
Back
Top