Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Lepizz en 12 de Noviembre 2014, 00:29
-
EL BOTON ELIMINAR SÍ ELIMINA DE LA BASE DE DATOS Y TAMBIEN DEL DATAGRID,
PERO SI ELIMINO DOS REGISTROS APARECE EL REGISTRO QUE FUE ELIMINADO LA PRIMERA VEZ,
TENGO QUE HACER QUE ELIMINE DE LA BASE DE DATOS(COMO LO HACE)Y DEL DATAGRID, ADEMAS
QUE SE PUEDAN ELIMINAR VARIOS REGISTROS SIN QUE REAPAREZCA UN REGISTRO QUE YA FUE
ELIMINADO.
No se porque ocurre eso, aqui esta el codigo del boton sino me explique bien o deje algo en claro me lo hacen saber por favor y gracias:
'_______________________________________________________________________________________
''BOTON ELIMINAR''----------Todo bien
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim consulta_eliminar As String
Dim respuesta As Byte
Dim posicion4 As Integer
respuesta = MsgBox("¿Esta seguro que desea eliminar este registro? ", vbYesNo, "Eliminar")
If respuesta = vbYes Then
Try
conexion.Open()
consulta_eliminar = ("Delete * FROM Esc_Salarial WHERE Esc_Salarial.cod_puesto = '" + Cod_puestoTextBox.Text + "'")
comandos2 = New OleDb.OleDbCommand(consulta_eliminar, conexion)
comandos2.ExecuteNonQuery()
Me.Esc_SalarialBindingSource.RemoveCurrent()
MsgBox("Registro eliminado.", vbInformation, "Eliminado.")
Cod_puestoTextBox.Clear()
Nom_puestoTextBox.Clear()
Sal_nivel1TextBox.Clear()
Sal_nivel2TextBox.Clear()
Sal_nivel3TextBox.Clear()
Sal_nivel4TextBox.Clear()
Sal_nivel5TextBox.Clear()
posicion4 = Esc_SalarialBindingSource.Position
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Me.Validate()
Me.Esc_SalarialBindingSource.EndEdit()
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Esc_SalarialBindingSource.Position = posicion4
Catch ex As Exception
MsgBox("Error al eliminar.", vbCritical, "Atención.")
posicion4 = Esc_SalarialBindingSource.Position
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Me.Validate()
Me.Esc_SalarialBindingSource.EndEdit()
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Esc_SalarialBindingSource.Position = posicion4
End Try
conexion.Close()
End If
End Sub
-
Hola, ¿puedes poner un ejemplo con datos de ejemplo indicando paso a paso que es lo que ocurre? Si eliminas uno a uno ¿tienes problema? Cuando dices "aparece el registro que fue eliminado" ¿dónde aparece, cuándo, y a qué te refieres con que fue eliminado la primera vez? Puede ser que estés borrando del datagrid y no de la base de datos, por eso cuando trates de hacer una operación nuevamente te recupera el contenido de la base de datos¿?
-
Gracias por responder, olvida lo que el registro aparece de nuevo, eso ya no me pasa, me explico, yo tengo las columnas Código de puesto, Nombre del puesto, Salario nivel1, salario nivel 2 y así hasta el nivel 5... y tengo textbox respectivamente para poder agregar los datos a la correspondiente columna.. lo que sucede es por ejemplo al tener varios registros ya agregados digamos que debo eliminar uno, muy bien tengo el botón de eliminar en el cual debo tener configurado que elimine de la base de datos de access pero q lo haga también del datagrid y se actualicen ambos para poder visualizar los cambios. Entonces al eliminar un registro cualquiera se elimina efectivamente de la BD y no vuelve a aparecer, también se elimina toda esa fila del dataGrid, hasta ahí esta bien...pero si elimino el registro que esta antes de ese por ejemplo, simplemente se eliminan del Datagrid y no de la BD... NO me da error pero eso claramente no debe pasar..
No comprendo porque si funciona a la perfección una vez no lo puede hacer mas veces
-
Este es el código para ese boto que tengo ahora:
'_______________________________________________________________________________________
''BOTON ELIMINAR''----------Todo bien
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim consulta_eliminar As String
Dim respuesta As Byte
respuesta = MsgBox("¿Esta seguro que desea eliminar este registro? ", vbYesNo, "Eliminar")
If respuesta = vbYes Then
Try
conexion.Open()
consulta_eliminar = ("Delete * FROM Esc_Salarial WHERE Esc_Salarial.cod_puesto = '" + Cod_puestoTextBox.Text + "'")
comandos2 = New OleDb.OleDbCommand(consulta_eliminar, conexion)
comandos2.ExecuteNonQuery()
Me.Esc_SalarialBindingSource.RemoveCurrent()
MsgBox("Registro eliminado.", vbInformation, "Eliminado.")
Cod_puestoTextBox.Clear()
Nom_puestoTextBox.Clear()
Sal_nivel1TextBox.Clear()
Sal_nivel2TextBox.Clear()
Sal_nivel3TextBox.Clear()
Sal_nivel4TextBox.Clear()
Sal_nivel5TextBox.Clear()
Catch ex As Exception
Me.Esc_SalarialTableAdapter.BORRAR(Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text)
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
MsgBox("Error al eliminar.", vbCritical, "Atención.")
End Try
conexion.Close()
End If
End Sub
Simplemente elimine el código para q mantenga la posición en el datagrid, ya que no hacia falta, mantenia posición sin eso... eso es lo unico diferente.
-
Me explique? ???
-
¿Puedes pegar la clase con el código donde tengas las instrucciones por las que se cargan los datos desde la base de datos al datagridview cuando abres el programa? Pienso que viendo eso pueda ayudar para resolver esto otro... ::)
-
Si claro aca lo dejo...
Imports System.Data
Imports System.Data.OleDb
'_______________________________________________________________________________________
Public Class Form1
Dim conexion As New OleDbConnection
Dim comandos As New OleDbCommand
Dim comandos2 As New OleDb.OleDbCommand
Dim adaptador As New OleDb.OleDbDataAdapter
Dim registro As New DataSet
gracias Saludos !!
-
Creo que se ha cortado... sólo aparece el comienzo del código ???
-
Imports System.Data
Imports System.Data.OleDb
'_______________________________________________________________________________________
Public Class Form1
Dim conexion As New OleDbConnection
Dim comandos As New OleDbCommand
Dim comandos2 As New OleDb.OleDbCommand
Dim adaptador As New OleDb.OleDbDataAdapter
Dim registro As New DataSet
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Try
conexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Soporte\Desktop\Nueva carpeta (2)\WindowsApplication7\Database1.accdb"
Catch ex As Exception
MsgBox("Error al cargar la Base de Datos", vbCritical, "Atención")
End Try
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Me.BindingContext(Esc_SalarialBindingSource).Position =
Me.BindingContext(Esc_SalarialBindingSource).Count - 1
Esc_SalarialDataGridView.Text = Me.BindingContext(Esc_SalarialBindingSource).Position
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim consulta_eliminar As String
Dim respuesta As Byte
respuesta = MsgBox("¿Esta seguro que desea eliminar este registro? ", vbYesNo, "Eliminar")
If respuesta = vbYes Then
Try
conexion.Open()
consulta_eliminar = ("Delete * FROM Esc_Salarial WHERE Esc_Salarial.cod_puesto = '" + Cod_puestoTextBox.Text + "'")
comandos2 = New OleDb.OleDbCommand(consulta_eliminar, conexion)
comandos2.ExecuteNonQuery()
Me.Esc_SalarialBindingSource.RemoveCurrent()
Cod_puestoTextBox.Clear()
Nom_puestoTextBox.Clear()
Sal_nivel1TextBox.Clear()
Sal_nivel2TextBox.Clear()
Sal_nivel3TextBox.Clear()
Sal_nivel4TextBox.Clear()
Sal_nivel5TextBox.Clear()
Catch ex As Exception
Me.Esc_SalarialTableAdapter.BORRAR(Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text, Cod_puestoTextBox.Text)
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
MsgBox("Error al eliminar.", vbCritical, "Atención.")
End Try
conexion.Close()
End If
End Sub
ok ahi esta.. a ver si sale bien
-
¿El problema puede estar relacionado con que esto Me.Esc_SalarialBindingSource.RemoveCurrent()
lo ejecutas después del delete sobre la base de datos.?
Prueba con esto: hacer el removeCurrent y luego el delete, o si no
prueba a recargar desde base de datos después de eliminar
Try
conexion.Open()
consulta_eliminar = ("Delete * FROM Esc_Salarial WHERE Esc_Salarial.cod_puesto = '" + Cod_puestoTextBox.Text + "'")
comandos2 = New OleDb.OleDbCommand(consulta_eliminar, conexion)
comandos2.ExecuteNonQuery()
Me.Esc_SalarialBindingSource.RemoveCurrent()
MsgBox("Registro eliminado.", vbInformation, "Eliminado.")
Me.Esc_SalarialTableAdapter.Fill(Me.Database1DataSet.Esc_Salarial)
Lo que he hecho es añadir el refresco del datagrid después del borrado
:)