none
No se ha inicializado la propiedad ConnectionString. RRS feed

  • Pregunta

  • Hola a todos,

    Perdonar mi ignorancia , pero alguien me podria explicar de forma sencilla que es lo que dice este error?? No se ha inicializado la propiedad ConnectionString.

     

    Por un lado tengo un modulo que hace listados de todas las ventas .

     

    Y por otro lado tengo el modulo que inserta las ventas .

     

    Si ejecuto cada modulo por separado o cerrando y volviendo a abrir los formularios me lo ejecuta sin problema.

    EL error viene cuando intento listar las ventas , y una vez listadas , intento a traves de otro form insertar una nueva .
    Cuando vuelvo a intentar listar todas las ventas , me manda ese error .

     

    El codigo donde me da el error es este:

    Public Function consultas_sql(ByVal comando As String, ByVal DGVListarProductos As DataGridView, Optional ByVal sumar As Boolean = False) As Boolean
            Dim fallo As Boolean = False
            ds.Clear()
            ds.Tables.Clear()
    
            DGVListarProductos.DataSource = Nothing
            DGVListarProductos.Refresh()
    
            adapter = New SqlDataAdapter(comando, connection)
            adapter.Fill(ds) ' aqui da error
            If ds.Tables(0).Rows.Count <> 0 Then
                DGVListarProductos.DataSource = ds.Tables(0)
    
            Else
                MessageBox.Show("No encontro resultados")
                DGVListarProductos.DataSource = ""
                fallo = True
    
    
            End If
            Return fallo
            connection.Close()
            connection.Dispose()
    
    
        End Function
    Alguien me puede ayudar ?

    gracias

    sábado, 4 de febrero de 2012 10:59

Respuestas

  • hola

    ese error informa que a la variable 

    connection

    no le has asignado la cadena de conexion

    en este codigo no se puede ver donde creas la instancia, pero deberia ser

     

    Dim connectionstring As String = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"

    Dim connection As New SqlConnection(connectionstring)

     

    como veras se define el string de la cadena de conexion que seguramente no asignas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 4 de febrero de 2012 12:14
  • Hola, controla bien en que momento intancias la variable de conexión.

    Dim con As New SqlClient.SqlConnection
    con.ConnectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"
    


    Yo te recomiendo crear una variable de conexión pública a la aplicación para así poder definir su ConnectionString una sola vez. Teniendo que abrir y cerrar solamente la conexión cuando se precise utilizarla.

    Saludos


    Santiago Ezequiel Rueda
    santiagorueda@live.com.ar
    Blog

    ¡Gadget MSDN Español!

    Entre Ríos
    Argentina
    sábado, 4 de febrero de 2012 14:53

Todas las respuestas

  • hola

    ese error informa que a la variable 

    connection

    no le has asignado la cadena de conexion

    en este codigo no se puede ver donde creas la instancia, pero deberia ser

     

    Dim connectionstring As String = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"

    Dim connection As New SqlConnection(connectionstring)

     

    como veras se define el string de la cadena de conexion que seguramente no asignas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 4 de febrero de 2012 12:14
  • Hola, controla bien en que momento intancias la variable de conexión.

    Dim con As New SqlClient.SqlConnection
    con.ConnectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"
    


    Yo te recomiendo crear una variable de conexión pública a la aplicación para así poder definir su ConnectionString una sola vez. Teniendo que abrir y cerrar solamente la conexión cuando se precise utilizarla.

    Saludos


    Santiago Ezequiel Rueda
    santiagorueda@live.com.ar
    Blog

    ¡Gadget MSDN Español!

    Entre Ríos
    Argentina
    sábado, 4 de febrero de 2012 14:53
  • "bertux77" preguntó:

    > alguien me podria explicar de forma sencilla que es lo que
    > dice este error?? No se ha inicializado la propiedad
    > ConnectionString.

    Creo que la propia descripción del error explica claramente el motivo por el cual se produce. ;-)

    > connection.Dispose()

    Si te fijas bien, al final de la función 'consultas_sql' estás destruyendo la variable objeto 'connection' que supuestamente está definida a nivel global del proyecto del tipo 'SqlConnection'.

    Aunque en un primer momento le asignes la cadena de conexión a la variable objeto 'connection', al ejecutarse

       connection.Dispose()

    destruyes el objeto SqlConnection y todos los valores de sus propiedades, por tanto, antes de llamar al método 'Fill' del adaptador de datos, tendrás que volver a crear el objeto 'SqlConnection' y asignarle el valor a su propiedad 'ConnectionString'.

    Esto es lo que tiene trabajar con variables globales al proyecto. Cuanto menor sea el ámbito de visibilidad de una variable, menos problemas tendrás.

    Otra cosa que puedes hacer es olvidarte de trabajar con una variable objeto 'SqlConnection' a nivel global, y declararla a nivel local dentro de la propia función 'consultas_sql':

       Public Function consultas_sql( _
          ByVal comando As String, _
          ByVal DGVListarProductos As DataGridView, _
          Optional ByVal sumar As Boolean = False) As Boolean
    
            Dim fallo As Boolean = False
            ds.Clear()
            ds.Tables.Clear()
    
            DGVListarProductos.DataSource = Nothing
            DGVListarProductos.Refresh()
    
            Try
                Using connection As New SqlConnection(cadenaConexion)
    
                   Using adapter As New SqlDataAdapter(comando, connection)
    
                      adapter.Fill(ds)
     
                      If ds.Tables(0).Rows.Count <> 0 Then
                        DGVListarProductos.DataSource = ds.Tables(0)
    
                      Else
                        MessageBox.Show("No encontro resultados")
                        DGVListarProductos.DataSource = ""
                        fallo = True
    
                      End If
    
                    End Using
    
                End Using
      
                Return fallo
    
             Catch ex As Exception
                ' Se ha producido un error
    
             End Try
    
        End Function

    Por supuesto, en alguna parte de tu proyecto tendrás que tener definida como Public una variable que contenga la cadena de conexión, representada en el ejemplo por la variable cadenaConexion.

    Aprovecho el mensaje para comentarte que el parámetro 'sumar' no se utiliza en la función, con lo que sería aconsejable que lo eliminaras de la firma del procedimiento.

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    martes, 7 de febrero de 2012 11:34
    Moderador