This gets em every time he he!
Page_Load fires every request aand it fires B4 selected index changed, so you are RELOADING your drop down list B4 then retreiving the employee information at which point the selected index is back to the default "0".
You need to use the Page.IsPostBack value and only bind your drop down list if it returns false eg:
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
With cnn
cnn.Open("DSN=Telephone;uid=sa;pswd=sa;")
End With
sql = "SELECT * FROM Emps ORDER BY Emp_Name"
rs = cnn.Execute(sql)
Txt_EmpName.Focus()
Dp3.Items.Clear()
If rs.EOF Then
MsgBox("Database is Empty", , "Telephone")
Else
Call loadme()
End If
End If
'Dp2.Visible = False
End Sub Google for "ASP.NET page life cycle" lots of handy stuff.