Tambien depende de como estas estableciendo tu datareader...por ejemplo si tienes un método que te regresa un DR algo así:
Cita: Private Function GetDataReader() As SqlDataReader
...
...
oConn.Open()
Dim dr As SqlDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
Return dr
End Function
Y se lo pasas a un datagrid:
Cita: Dim dr As SqlDataReader = GetDataReader()
DataGrid1.DataSource = dr
DataGrid1.DataBind()
En ese momento tanto la conexion como el datareader están cerrados, ya que el mismo objeto grid se encarga de esa parte..
ahora que si estas regresando un reader y lo estas recorriendo por ejemplo con un while..
Cita: Do While dr.Read
..
..
Loop
Cuando termine el ciclo el dataredaer seguirá abierto...
Todo depende de como lo estes usando.. pero si quieres saber si está o no cerrado puedes simplemente hacer ésto:
Cita: If Not dr.IsClosed Then
dr.Close()
End If
Salu2