CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 VB.NET + ACCESS Como Eliminar un Registro

(1/1)

datawox:
Tengo un modulo con lo siguiente:

==========================================================================================================================
==========================================================================================================================
'Importamos los namespaces
Imports System.Data
Imports System.Data.OleDb
Imports System.Windows.Forms.Form

Module Conexiones

    'Variables
    Public dt As DataTable
    Public da As OleDbDataAdapter
    'Conexión con la mdb
    Public conexion As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\192.168.44.220basesdedatosAgenda.accdb;Persist Security Info=False")
    'La cadena de selección, una por cada Tabla que queramos abrir
    Public TdatosId As String = "SELECT Id,Nombre,Cp,Poblacion,Tel1,Tel2,Mov1,Mov2,Mail FROM Datos ORDER BY Id"
    Public TdatosNombre As String = "SELECT * FROM Datos ORDER BY Nombre"
    Public EliminarRegistro As String = "DELETE FROM Datos WHERE Id=4"

End Module
===========================================================================================================================
===========================================================================================================================

En el Evento clic de un boton con el cual quiero eliminar el registro con el Id=4…

===========================================================================================================================
===========================================================================================================================
Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
       
        Try

            'Crear un nuevo objeto del tipo DataAdapter
            da = New OleDbDataAdapter(EliminarRegistro, conexion)

            'Crear los comandos de insertar, actualizar y eliminar
            Using cb As New OleDbCommandBuilder(da)

                Dim cmd As New OleDbCommand(EliminarRegistro)

                da.Fill(dt)

                cmd.ExecuteNonQuery()

                'Llenar la tabla con los datos indicados


            End Using

        Catch ex As Exception
            MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
                            ex.Message, "Conectar con la base", _
                            MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        ' propiedades del datagrid  
        ' '''''''''''''''''''''''''''''''''''''  
        With dgvDatos
            ' alternar color de filas  
            .AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite
            .DefaultCellStyle.BackColor = Color.RosyBrown
            ' Establecer el origen de datos para el DataGridview  
            .DataSource = dt
        End With
========================================================================================================================
========================================================================================================================

Lanza el siguiente Error
Titulo: Conectar con la base
ERROR al conectar o recuperar los datos:
ExecuteNonQuery: la propiedad Connection no se ha inicializado

Pero el regitro con el Id=4 lo elimina de la Base de Datos…

Alguien sabe como puedo depurar este código para que no lance el error?
O si lo puedo hacer mejor de otra forma?
Gracias.

fm89-10:
el problema que podrias tener es que usas la consulta de eliminarRegistro dos veces.
 una es con el

--- Código: vb.net ---da = New OleDbDataAdapter(EliminarRegistro, conexion)  y la otra es con el

--- Código: vb.net ---Dim cmd As New OleDbCommand(EliminarRegistro) 

en la primera consulta te lo elimina bien, pero en la segunda lo quieres volver a eliminar y no le pasas la conexion. y ese podria ser tu error.
 
--- Citar ---Lanza el siguiente Error
Titulo: Conectar con la base
ERROR al conectar o recuperar los datos:
ExecuteNonQuery: la propiedad Connection no se ha inicializado
--- Fin de la cita ---

te dejo esta otra forma de hacerlo a ver si te funciona


--- Código: vb.net --- Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click TryDim cmd As New OleDbCommand(EliminarRegistro,conexion)cmd.ExecuteNonQuery() 'Crear un nuevo objeto del tipo DataAdapterda = New OleDbDataAdapter(TdatosNombre, conexion) 'Crear los comandos de insertar, actualizar y eliminarUsing cb As New OleDbCommandBuilder(da)da.Fill(dt) 'Llenar la tabla con los datos indicadosWith dgvDatos' alternar color de filas.AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite.DefaultCellStyle.BackColor = Color.RosyBrown' Establecer el origen de datos para el DataGridview.DataSource = dtEnd With End Using Catch ex As ExceptionMessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _ex.Message, "Conectar con la base", _MessageBoxButtons.OK, MessageBoxIcon.Error)End Try    

Navegación

[0] Índice de Mensajes

Ir a la versión completa