Foros del Web » Programación para mayores de 30 ;) » .NET »

Execute Reader: la propiedad Connection no se ha inicializado

Estas en el tema de Execute Reader: la propiedad Connection no se ha inicializado en el foro de .NET en Foros del Web. Hola de nuevo, He vuelto a retomar el programa que empecé a realizar hace un par de meses. Voy paso a paso pero me he ...
  #1 (permalink)  
Antiguo 08/02/2012, 02:44
Avatar de freemanworld  
Fecha de Ingreso: agosto-2008
Mensajes: 191
Antigüedad: 15 años, 8 meses
Puntos: 0
Execute Reader: la propiedad Connection no se ha inicializado

Hola de nuevo,

He vuelto a retomar el programa que empecé a realizar hace un par de meses.
Voy paso a paso pero me he encontrado con que me vuelve a aparecer este error.
Facilto el código que estoy usando en la Clase que he creado:
Cita:
Imports System.Data.OleDb
Imports System.Data.Odbc
Imports System.Data
Imports System
Imports System.Data.SqlClient

Public Class CAkotei
Private conexionBD As New OleDb.OleDbConnection
Private sql As New OleDb.OleDbCommand
Private datos As OleDb.OleDbDataReader

Public lista
Public Usuario
Public Nombre
Public Apellido
Public NombreDeEquipo
Public Ram
Public IP
Public tfn
Public Ext
Public eMail
Public Impresora

'Constructor de la clase

Public Sub conectar()
Dim ruta As String
Try
sql = New OleDb.OleDbCommand
sql.Connection = conexionBD
ruta = Application.StartupPath & "\bdDatabase.mdb"
conexionBD = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLED B.4.0;" & _
"Data Source=" & System.Environment.CurrentDirectory & "\bdDatabase.mdb")
conexionBD.Open()
Catch ex As Exception
MsgBox("No se ha podido conectar a la base de datos")
End
End Try

End Sub
Private Sub CerrarConexion()
conexionBD.Close()
'UPGRADE_NOTE: El objeto conexion no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
conexionBD = Nothing
'UPGRADE_NOTE: El objeto datos no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
datos = Nothing
End Sub

Public Sub Listar()
Dim sql As Object
'Obtenemos todos los contactos actuales:
sql.CommandText = String.Format("Select Nom_Usuario from AKOTEI")
datos = sql.ExecuteReader()
End Sub

Public Function Obtener_Nequipo(ByVal PcMEN As String)
Dim user As String = ""
conexionBD.Open()
sql.CommandText = String.Format("Select Nombre_PC from AKOTEI where Nom_Usuario = '{0}'", PcMEN)
datos = sql.ExecuteReader
If datos.Read() Then
user = datos("Nombre_PC")
End If

datos.Close()
Return user
'Err_NombreEquipo:
' user = ""
' Resume Next
End Function
Public Function Obtener_IP(ByVal IP_MEN As String)
Dim user As String = ""
sql.CommandText = String.Format("Select IP from AKOTEI where Nom_Usuario = '{0}'", IP_MEN)

datos = sql.ExecuteReader
If datos.Read() Then
user = datos("IP")
End If

datos.Close()
Return user
End Function

Public Function Obtener_InfoEquipo(ByVal Equipo_MEN As String)
Dim user As String = ""
sql.CommandText = String.Format("Select Equipo from AKOTEI where Nom_Usuario = '{0}'", Equipo_MEN)
datos = sql.ExecuteReader
If datos.Read() Then
user = datos("Equipo")
End If

datos.Close()
Return user
End Function
Public Function Obtener_RAM(ByVal RAM_MEN As String)
Dim user As String = ""
sql.CommandText = String.Format("Select RAM from AKOTEI where Nom_Usuario = '{0}'", RAM_MEN)
datos = sql.ExecuteReader
If datos.Read() Then
user = datos("RAM")
End If
datos.Close()
Return user
End Function
Public Function Obtener_Mail(ByVal MAIL_MEN As String)
Dim user As String = ""
sql.CommandText = String.Format("Select mail from AKOTEI where Nom_Usuario = '{0}'", MAIL_MEN)
On Error GoTo Usr_Mail
datos = sql.ExecuteReader

If datos.Read() Then
user = datos("mail")
End If
datos.Close()
Return user
Usr_Mail:
user = ""

End Function
Public Function Obtener_Apellido(ByVal APE_MEN As String)
Dim user As String = ""
conectar()
sql.CommandText = String.Format("Select Ape_Usu from AKOTEI where Nom_Usuario = '{0}'", APE_MEN)
On Error GoTo Usr_err
datos = sql.ExecuteReader

If datos.Read() Then

user = datos("Ape_Usu")
End If

datos.Close()
Return user
Usr_err:
user = ""
End Function

Public Function Obtener_Impresora(ByVal IMP_MEN As String)
Dim user As String = ""
sql.CommandText = String.Format("Select Impresora from AKOTEI where Nom_Usuario = '{0}'", IMP_MEN)
On Error GoTo Usr_Impresora
datos = sql.ExecuteReader
If datos.Read() Then

user = datos("Impresora")
End If

datos.Close()
Return user
Usr_Impresora:
user = ""
End Function
Public Sub desconectar()
conexionBD.Close()
End Sub
Public Sub Alta(ByVal CONCESIONARIO As String, ByVal DNS As String, ByVal NombreDNS As String)

Dim sqlAlta As String
sqlAlta = "Insert into AKOTEI (CONCESIONARIO) values ('{0}')"
sql.CommandText = String.Format(sqlAlta, CONCESIONARIO)
sql.ExecuteNonQuery()

End Sub

Public Sub ListarUsuarios()
sql.CommandText = "Select Nom_Usuario from AKOTEI ORDER BY Nom_Usuario"
datos = sql.ExecuteReader()
End Sub

Public Function ListarCombo() As Boolean
If datos.Read Then
Usuario = datos("Nom_Usuario")
ListarCombo = True
Else
datos.Close()
ListarCombo = False
End If
End Function
End Class
El error me lo dá en:
Cita:
Public Sub ListarUsuarios()
sql.CommandText = "Select Nom_Usuario from AKOTEI ORDER BY Nom_Usuario"
datos = sql.ExecuteReader()
Me indica: No se controló InvalidOperationException

¿Alguna idea?
Gracias
  #2 (permalink)  
Antiguo 08/02/2012, 11:59
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

prueba poniendo String.Format antes de la consulta
  #3 (permalink)  
Antiguo 09/02/2012, 05:41
Avatar de freemanworld  
Fecha de Ingreso: agosto-2008
Mensajes: 191
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

Gracias por tu ayuda pero me sige fallando..

Cita:
sql.CommandText = String.Format("Select Nom_Usuario from AKOTEI ORDER BY Nom_Usuario")
datos = sql.ExecuteReader()
Alguna otra idea?
  #4 (permalink)  
Antiguo 10/02/2012, 04:29
Avatar de freemanworld  
Fecha de Ingreso: agosto-2008
Mensajes: 191
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

añado algo más de información ya que me he instalado la versión de Visual Studio 2005 y en la ventana de inmediato me indica lo siguiente:

Cita:
en System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
en System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
en System.Windows.Forms.Application.ThreadContext.Run MessageLoopInner(Int32 reason, ApplicationContext context)
en System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
en System.Windows.Forms.Application.Run(ApplicationCo ntext context)
en Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.OnRun()
en Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.DoApplicationModel()
en Microsoft.VisualBasic.ApplicationServices.WindowsF ormsApplicationBase.Run(String[] commandLine)
en GrupoVasaAgenda.My.MyApplication.Main(String[] Args) en 17d14f5c-a337-4978-8281-53493378c1071.vb:línea 81
en System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
en System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
en Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
en System.Threading.ThreadHelper.ThreadStart_Context( Object state)
en System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
en System.Threading.ThreadHelper.ThreadStart()</ExceptionString></Exception></TraceRecord>
Un saludo
  #5 (permalink)  
Antiguo 10/02/2012, 06:00
Avatar de freemanworld  
Fecha de Ingreso: agosto-2008
Mensajes: 191
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

He modificado el código para que me dé algo más de información añadiendo:
MsgBox(conexionBD.State)

Si sale 1 es que está conectado pero si sale 0 no está conectado.
Pues bien, al ejecutar dicho programa Cuando va a conectar me dice que si que está conectada pero a la hora de llegar a :

Código:
Public Sub ListarUsuarios()
        conectar()
        Try

            MsgBox(conexionBD.State)
            sql.CommandText = String.Format("Select Nom_Usuario from AKOTEI ORDER BY Nom_Usuario")
            datos = sql.ExecuteReader()

        Catch ex As Exception

            'En caso de excepcion...visualizar el texto en una etiqueta
            MsgBox(conexionBD.State)
            MsgBox("ErrorEnLaFuncion Texto: " + ex.Message)


        End Try
    End Sub
Me da el siguiente error:
Cita:
Execute reader requierer una conexión abierta y disponible. El estado actual de la conexión es cerrada
¿alguna idea?
Gracias
  #6 (permalink)  
Antiguo 10/02/2012, 09:39
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 10 meses
Puntos: 17
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

asi es compañero
Cita:
Public Sub ListarUsuarios()
sql.CommandText = String.Format("Select Nom_Usuario from AKOTEI ORDER BY Nom_Usuario")
datos = sql.ExecuteReader()
End Sub
aki veo que estas creando un sub proceso, esto quiere decir que todo lo que uses fuera, este no lo conoce y no puede tener acceso a todo aquello a menos que crees un objeto, es decir que si abres una conexion en otro subproceso, los demas no lo conocen.
en este Sub debes abrir la conexion antes de hacer la consulta y cerrarlo despues de ejecutarla

si te fijas despues de abrir el metodo
Public Function Obtener_Apellido(ByVal APE_MEN As String)
tienes puesto
conectar()
aki estas abriendo la conexion.

Espero te ayude
Saludos
  #7 (permalink)  
Antiguo 13/02/2012, 05:33
Avatar de freemanworld  
Fecha de Ingreso: agosto-2008
Mensajes: 191
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Execute Reader: la propiedad Connection no se ha inicializado

Buenas,

Gracias por la ayuda.
Estoy teniendo problemas porque luego tengo puesto:

Cita:
While Usuario.ListarCombo = True
cmbnombreusuario.Items.Add(Usuario.Usuario)
End While
Cómo puedo poner todo en una misma funcion?

Aún así el valor de datos me sigue dando nothing....

Gracias

Etiquetas: connection, executereader, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.