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

Problema al eliminar registro y actualizar datatable con base de datos acces 2003

Estas en el tema de Problema al eliminar registro y actualizar datatable con base de datos acces 2003 en el foro de .NET en Foros del Web. Hola tengo problema al eliminar un registro, el problema reside en que cuando elimino en el primer registro elimina normal y actualiza el datatable normalmente ...
  #1 (permalink)  
Antiguo 17/12/2010, 18:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 13 años, 4 meses
Puntos: 0
Problema al eliminar registro y actualizar datatable con base de datos acces 2003

Hola tengo problema al eliminar un registro, el problema reside en que cuando elimino en el primer registro elimina normal y actualiza el datatable normalmente el problema surge cuando quiero eliminar un segundo registro la eliminacion lo realiza correctamente en la base de datos de acces pero no actualiza la eliminacion en el datatable enlazado a un datagrid tengo que eliminar dos veces el mismo registro para que elimine el registro en el datatbale enlazado al data grid, he probado con hacer un select seleccionando solamente dos campos de mi tabla empleados, ahi si no tengo problema realiza la eliminacion del registro en el datatable y en la base de datos de acces el problema esta cuando hago un select de todos los campos ahi surge el problema de borrado, solamente tengo problema con el borrado de registro, con ingresar datos, modificar y actualizar no tengo problemas. tengo otros formularios que trabajan con otras tablas que tienen solamente 2 campos ahi no tengo problema al eliminar el registro, el problema esta cuando la tabla tiene varios campos. También he probado utilizando dataset y oledbdataadapter y también sigue la misma falla, también he probado sin enlazar a un datagrid, utilizando solamente botones para la nevegacion el resultado es el mismo tiene la misma falla.

Programo en vb.net 2008 winform con base de datos acces 2003

este es el codigo de conexion de mantenimiento y consulta esta en un modulo

el query y otras variables mas que se utiliza en este formulario lo tengo declarado como public en otro modulo

Imports System.Data

Imports System.Data.OleDb

Module ModuloInicio



Public Dreader As OleDbDataReader

Public cn As New OleDbConnection

Public strcodigo As String
Public Sub main()

conec()

Dim objForm As New Lista_empleados()

objForm.ShowDialog()

Application.Run()

End Sub



Public Sub conec()

Dim ruta = Application.StartupPath

If cn.State = ConnectionState.Closed Then

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ruta & "\almacen.mdb; Persist Security Info=False;User ID=ADMIN;jet OLEDB:Database Password=estalactita")

cn.Open()

End If

End Sub



Sub mantenimiento(ByVal query As String)

Try

If Not cn.State = ConnectionState.Open Then

cn.Open()

End If


Dim com As New OleDbCommand(query, cn)

com.ExecuteNonQuery()

cn.Close()



Catch ex As Exception

cn.Close()

MsgBox(ex.Message)

End Try

End Sub





Function consulta(ByVal query As String) As OleDbDataReader



If Not cn.State = ConnectionState.Open Then

cn.Open()

End If



Dim com As New OleDbCommand(query, cn)



com.ExecuteNonQuery()

Dreader = com.ExecuteReader()



Return Dreader

cn.Close()

End Function



Esto es el codigo de mi formulario empleados, la navegacion lo hago a traves del datagrid

Imports System.Data

Imports System.Data.OleDb

Public Class Lista_empleados



Dim com As OleDbCommand

Dim Dt As New DataTable

Dim tot, fil, col, pos As Integer

Dim estado As String

Dim codcategoria, codmarca, codmodelo As String





Private Sub Lista_empleados_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

cargar_combo("CAR", cbcargo)

cargar_combo("ARE", cbarea)

cargar_combo("PAI", cbpais)





With cbsexo

.Items.Add("Masculino")

.Items.Add("Femenino")

End With



With cbbusqueda

.Items.Add("Nombre")

.Items.Add("Categoria")

.Items.Add("Marca")

End With



botones(True)

cargargrid()

verdatos()

formatogrid()



End Sub





Private Sub cmdgrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdgrabar.Click



If txtnombre.Text = "" Then MsgBox("Ingrese nombre ", vbExclamation, "Aviso") : txtnombre.Focus() : Exit Sub

If cbcargo.Text = "" Then MsgBox("Seleccione Cargo ", vbExclamation, "Aviso") : cbcargo.Focus() : Exit Sub

If cbarea.Text = "" Then MsgBox("Seleccione Area de Trabajo ", vbExclamation, "Aviso") : cbarea.Focus() : Exit Sub





If estado = "actualizar" Then

Else

generarcodigo()

query = "INSERT INTO empleados VALUES ('" & txtcodigo.Text & "', '" & txtnombre.Text _

& "', '" & txtdireccion.Text & "','" & cbcargo.Text & "' ,'" & cbarea.Text _

& "', '" & cbpais.Text & "', '" & txtciudad.Text & "','" & cbsexo.Text _

& "', '" & txtemail.Text & "', '" & txttelefono.Text & "','" & txtcelular.Text _

& "', '" & dtfecha.Text & "', '" & txtobservacion.Text & "')"

mantenimiento(query)

mensajeagregado.ShowDialog()

End If



botones(True)

limpiar()

cargargrid()

verdatos()





End Sub



Private Sub cargargrid()

query = "SELECT * FROM empleados ORDER BY idempleado ASC"

Dreader = consulta(query)

Dt.Clear()

Dt.Load(Dreader)

dgempleados.DataSource = Dt



dgempleados.Sort(dgempleados.Columns("idempleado") , System.ComponentModel.ListSortDirection.Ascending)

End Sub







Private Sub dgempleados_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgempleados.CellContentClick

verdatos()

End Sub



Private Sub dgempleados_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgempleados.CellEnter

verdatos()

End Sub



Private Sub cmdeliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdeliminar.Click





If MsgBox(" Desea borrar este registro permanentemente", MsgBoxStyle.YesNo, "Aviso") = MsgBoxResult.No Then



verdatos()

Exit Sub



Else

query = "DELETE FROM empleados WHERE idempleado = '" & txtcodigo.Text & "'"
mantenimiento(query)




limpiar()

cargargrid()



End If




End Sub

End Class

Etiquetas: datatable, eliminar, registro
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 16:46.