• Jueves 2 de Mayo de 2024, 22:30

Autor Tema:  VB.NET + ACCESS Como Eliminar un Registro  (Leído 6380 veces)

datawox

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
VB.NET + ACCESS Como Eliminar un Registro
« en: Viernes 16 de Abril de 2010, 10:08 »
0
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

  • Miembro activo
  • **
  • Mensajes: 75
  • Nacionalidad: ni
    • Ver Perfil
Re: VB.NET + ACCESS Como Eliminar un Registro
« Respuesta #1 en: Viernes 16 de Abril de 2010, 17:51 »
0
el problema que podrias tener es que usas la consulta de eliminarRegistro dos veces.
 una es con el
Código: vb.net
  1. da = New OleDbDataAdapter(EliminarRegistro, conexion)
  2.  
y la otra es con el
Código: vb.net
  1. Dim cmd As New OleDbCommand(EliminarRegistro)
  2.  


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

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

Código: vb.net
  1.  
  2. Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
  3.  
  4. Try
  5. Dim cmd As New OleDbCommand(EliminarRegistro,conexion)
  6. cmd.ExecuteNonQuery()
  7.  
  8. 'Crear un nuevo objeto del tipo DataAdapter
  9. da = New OleDbDataAdapter(TdatosNombre, conexion)
  10.  
  11. 'Crear los comandos de insertar, actualizar y eliminar
  12. Using cb As New OleDbCommandBuilder(da)
  13. da.Fill(dt)
  14.  
  15. 'Llenar la tabla con los datos indicados
  16. With dgvDatos
  17. ' alternar color de filas
  18. .AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite
  19. .DefaultCellStyle.BackColor = Color.RosyBrown
  20. ' Establecer el origen de datos para el DataGridview
  21. .DataSource = dt
  22. End With
  23.  
  24. End Using
  25.  
  26. Catch ex As Exception
  27. MessageBox.Show("ERROR al conectar o recuperar los datos:" & vbCrLf & _
  28. ex.Message, "Conectar con la base", _
  29. MessageBoxButtons.OK, MessageBoxIcon.Error)
  30. End Try
  31.  
  32.  
  33.  
  34.