none
ERROR DE CONEXION FILL LA PROPIEDAD SELECT COMMAND CONECTION NO SE HA INICIALIZADO RRS feed

  • Pregunta

  • HOLA AMIGOS PROGRAMADORES EL SIGUIENTE CODIGO LO ESTOY USANDO BIEN PARA HACER CONSULTAS Y BUSQUEDAS CON EL BOTON ACEPTAR PERO AL DARLE CLIC AL EN MI MDI AL NOMBRE DE LA CONSULTA  ME TIRA UN ERROR EN TIEMPO DE EJECUCION AUNQUE SIEMPRE ME FUNCIONA PERO QUISIERA CORREGIR ESTE DETALLE :

    ERROR SIGUIENTE

    ERROR DE CONEXION FILL =LA PROPIEDAD SELECT COMMAND CONECTION NO SE HA INICIALIZADO

     Private Sub BtnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBuscar.Click
            Dim lsQuery As String = "Select * From Departamentos"
            Dim lbHayFiltro As Boolean = False
            If Me.txtnombre.Text <> "" Then
                lsQuery &= " Where Nombre Like '%" & Me.txtnombre.Text & "%'"
                If datagridconsultadeptos.Rows.Count = 0 Then
                    MsgBox("No hay registros para esta busqueda")
                End If
                lbHayFiltro = True
            End If
            If Me.txtcodigo.Text <> "" Then
                If lbHayFiltro = True Then
                    lsQuery &= " And "
                Else
                    lsQuery &= " Where "
                    If datagridconsultadeptos.Rows.Count = 0 Then
                        MsgBox("No hay registros para esta busqueda")
                    End If
                End If
                lsQuery &= "Codigo_Departamento=" & Me.txtcodigo.Text
            End If
            lP_ActualizaGrid(Me.datagridconsultadeptos, lsQuery)
        End Sub
    ***********************************************************************

     Private Sub lP_ActualizaGrid(ByRef dgrDataGridView As DataGridView, ByVal vsQuery As String)
            Try
                Using loConexion As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath.ToString & "\DBPlanillas.mdb")
                    Dim loDataTable As New DataTable
                    Dim loDataAdapter As New OleDb.OleDbDataAdapter(vsQuery, loConexion)
                    loDataAdapter.Fill(loDataTable)
                    'Para enlazar el datatable con el datagrid, en DataSource se asigna el datatable
                    Me.datagridconsultadeptos.DataSource = loDataTable
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "lP_ActualizaGrid", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
      
    GRACIAS AMIGOS

    domingo, 27 de marzo de 2011 6:47

Respuestas

  • hola

    que raro que muestre ese mensaje de error, proque segun veo en esta linea

    Dim loDataAdapter As New OleDb.OleDbDataAdapter(vsQuery, loConexion)

    defines el objecto de conexion que usa el dataadapter

     

    igualmente recomendariq que apliques algo como esto

     

    Private Sub lP_ActualizaGrid()

        Try
            Dim connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath.ToString & "\DBPlanillas.mdb"
          
            Using loConexion As New OleDb.OleDbConnection(connstring)
               
                Dim vsQuery As String = "Select * From Departamentos " & _
                                        "Where ( (@nombre IS NULL) OR (Nombre Like '%' + @nombre + '%') " & _
                                        "AND ( (@codigo IS NULL) OR (Codigo_Departamento = @codigo )"
               
                Dim cmd As New OleDbCommand(vsQuery, loConexion)
               
                If String.IsNullOrEmpty(txtnombre.Text) Then
                    cmd.Parameters.AddWithValue("@nombre", DbNull.Value)
                Else
                    cmd.Parameters.AddWithValue("@nombre", txtnombre.Text)
                End If
               
                If String.IsNullOrEmpty(txtcodigo.Text) Then
                    cmd.Parameters.AddWithValue("@codigo", DbNull.Value)
                Else
                    cmd.Parameters.AddWithValue("@codigo", txtcodigo.Text)
                End If
               
                Dim loDataAdapter As New OleDb.OleDbDataAdapter(cmd)
                Dim loDataTable As New DataTable
                loDataAdapter.Fill(loDataTable)
               
                Me.datagridconsultadeptos.DataSource = loDataTable
               
            End Using
           
        Catch ex As Exception
            MessageBox.Show(ex.Message, "lP_ActualizaGrid", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try

    End Sub

     

    como veras el query es fijo, pero el apsarle null al parametro o no hara que se aplique el filtro o no

     

    saludos

     


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 27 de marzo de 2011 7:52

  • > ERROR DE CONEXION FILL =LA PROPIEDAD SELECT COMMAND CONECTION NO SE HA INICIALIZADO

    Por el código que estás ejecutando, me parece extraño que obtengas ese error. Exactamente, ¿en qué línea de código lo obtienes?

    No obstante, mejor será que el método «lP_ActualizaGrid» devuelva un objeto DataTable, en lugar de pasarle por referencia el control DataGridView.

    Prueba a ejecutar el código de la siguiente manera:

        Private Sub BtnBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnBuscar.Click

            If (datagridconsultadeptos.Rows.Count = 0) Then
                MsgBox("No hay registros para esta busqueda")
                Return
            End If

            Dim lsQuery As String = "Select * From Departamentos"
            Dim lbHayFiltro As Boolean = False

            If (Me.txtnombre.Text <> "") Then
                lsQuery &= " Where Nombre Like '%" & Me.txtnombre.Text & "%'"
                lbHayFiltro = True
            End If

            If (Me.txtcodigo.Text <> ")" Then
                If (lbHayFiltro) Then
                    lsQuery &= " And "
                Else
                    lsQuery &= " Where "
                End If
                lsQuery &= "Codigo_Departamento=" & Me.txtcodigo.Text
            End If

            Try
                Me.datagridconsultadeptos = lP_ActualizaGrid(lsQuery)

            Catch ex As Exception
                MessageBox.Show(ex.Message, "lP_ActualizaGrid", MessageBoxButtons.OK, MessageBoxIcon.Information)

            End Try

        End Sub

        Private Function lP_ActualizaGrid(ByVal vsQuery As String) As DataTable

            If (vsQuery = String.Empty) Then _
                Return Nothing

            Try
                Using loConexion As New OleDb.OleDbConnection( _
                    "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & My.Application.Info.DirectoryPath.ToString & "\DBPlanillas.mdb")

                    Dim loDataTable As New DataTable()
                    Dim loDataAdapter As New OleDb.OleDbDataAdapter(vsQuery, loConexion)
                    loDataAdapter.Fill(loDataTable)

                    Return loDataTable

                End Using

            Catch ex As Exception
                Throw

            End Try

        End Function

     


    Enrique Martínez
      [MS MVP - VB]

    domingo, 27 de marzo de 2011 8:01
    Moderador

Todas las respuestas

  • hola

    que raro que muestre ese mensaje de error, proque segun veo en esta linea

    Dim loDataAdapter As New OleDb.OleDbDataAdapter(vsQuery, loConexion)

    defines el objecto de conexion que usa el dataadapter

     

    igualmente recomendariq que apliques algo como esto

     

    Private Sub lP_ActualizaGrid()

        Try
            Dim connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath.ToString & "\DBPlanillas.mdb"
          
            Using loConexion As New OleDb.OleDbConnection(connstring)
               
                Dim vsQuery As String = "Select * From Departamentos " & _
                                        "Where ( (@nombre IS NULL) OR (Nombre Like '%' + @nombre + '%') " & _
                                        "AND ( (@codigo IS NULL) OR (Codigo_Departamento = @codigo )"
               
                Dim cmd As New OleDbCommand(vsQuery, loConexion)
               
                If String.IsNullOrEmpty(txtnombre.Text) Then
                    cmd.Parameters.AddWithValue("@nombre", DbNull.Value)
                Else
                    cmd.Parameters.AddWithValue("@nombre", txtnombre.Text)
                End If
               
                If String.IsNullOrEmpty(txtcodigo.Text) Then
                    cmd.Parameters.AddWithValue("@codigo", DbNull.Value)
                Else
                    cmd.Parameters.AddWithValue("@codigo", txtcodigo.Text)
                End If
               
                Dim loDataAdapter As New OleDb.OleDbDataAdapter(cmd)
                Dim loDataTable As New DataTable
                loDataAdapter.Fill(loDataTable)
               
                Me.datagridconsultadeptos.DataSource = loDataTable
               
            End Using
           
        Catch ex As Exception
            MessageBox.Show(ex.Message, "lP_ActualizaGrid", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try

    End Sub

     

    como veras el query es fijo, pero el apsarle null al parametro o no hara que se aplique el filtro o no

     

    saludos

     


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 27 de marzo de 2011 7:52

  • > ERROR DE CONEXION FILL =LA PROPIEDAD SELECT COMMAND CONECTION NO SE HA INICIALIZADO

    Por el código que estás ejecutando, me parece extraño que obtengas ese error. Exactamente, ¿en qué línea de código lo obtienes?

    No obstante, mejor será que el método «lP_ActualizaGrid» devuelva un objeto DataTable, en lugar de pasarle por referencia el control DataGridView.

    Prueba a ejecutar el código de la siguiente manera:

        Private Sub BtnBuscar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnBuscar.Click

            If (datagridconsultadeptos.Rows.Count = 0) Then
                MsgBox("No hay registros para esta busqueda")
                Return
            End If

            Dim lsQuery As String = "Select * From Departamentos"
            Dim lbHayFiltro As Boolean = False

            If (Me.txtnombre.Text <> "") Then
                lsQuery &= " Where Nombre Like '%" & Me.txtnombre.Text & "%'"
                lbHayFiltro = True
            End If

            If (Me.txtcodigo.Text <> ")" Then
                If (lbHayFiltro) Then
                    lsQuery &= " And "
                Else
                    lsQuery &= " Where "
                End If
                lsQuery &= "Codigo_Departamento=" & Me.txtcodigo.Text
            End If

            Try
                Me.datagridconsultadeptos = lP_ActualizaGrid(lsQuery)

            Catch ex As Exception
                MessageBox.Show(ex.Message, "lP_ActualizaGrid", MessageBoxButtons.OK, MessageBoxIcon.Information)

            End Try

        End Sub

        Private Function lP_ActualizaGrid(ByVal vsQuery As String) As DataTable

            If (vsQuery = String.Empty) Then _
                Return Nothing

            Try
                Using loConexion As New OleDb.OleDbConnection( _
                    "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & My.Application.Info.DirectoryPath.ToString & "\DBPlanillas.mdb")

                    Dim loDataTable As New DataTable()
                    Dim loDataAdapter As New OleDb.OleDbDataAdapter(vsQuery, loConexion)
                    loDataAdapter.Fill(loDataTable)

                    Return loDataTable

                End Using

            Catch ex As Exception
                Throw

            End Try

        End Function

     


    Enrique Martínez
      [MS MVP - VB]

    domingo, 27 de marzo de 2011 8:01
    Moderador