NO FUNCIONA DELETE...

16/06/2005 - 00:14 por Edmundo J. Davila | Informe spam
Hola amig@s:

Tengo el siguiente codigo para borrar registros:

Sub Eliminar()

If Me.BindingContext(Me.objCOSTO, "COSTO_HOJA_DATOS").Count > 0 Then

If MessageBox.Show("¿Esta seguro que desea eliminar el registro?",
"Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1) = DialogResult.Yes Then

Me.BindingContext(Me.objCOSTO,
"COSTO_HOJA_DATOS").RemoveAt(Me.BindingContext(Me.objCOSTO,
"COSTO_HOJA_DATOS").Position)

Me.objCOSTO.AcceptChanges()

MessageBox.Show("El registro ha sido borrado.", "Mensaje",
MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

Else

MessageBox.Show("No hay registros que eliminar.", "Mensaje",
MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

End Sub

En el texto del comando eliminar del dataadapter tengo:

DELETE FROM COSTO_HOJA_DATOS
WHERE (ID_TRANSACCION = @ID_TRANSACCION)

Aparentemente borra el registro, pero cuando me salgo y vuelvo de la forma y
entro nuevamente alli esta el registro que supuestamente borre. ¿que estoy
omitiendo?

De antemano agradezco sus comentarios.



Edmundo Davila
 

Leer las respuestas

#1 Carlos Durán Urenda
16/06/2005 - 16:32 | Informe spam
Bueno a primera vista parece ser que el AceptChanges es el que te está dando
problemas, por que de alguna manera con esto le indicas al adaptador que ese
registro ya fue procesado y simplemente no lo procesa al hacer el update. en
lugar de AceptChanges puedes utilizar en EndCurrentEdit del BindingContext,
aunque en la eliminacion no es necesario

Si aun asi no te funciona puede que el DeleteCommand no esté configurado
adecuadamente, ¿por que no pruebas creando el comando de eliminacion a
traves del CommandBuilder?

Dim CB as New OleDbCommandBuilder(Adaptador) ' para el caso de oledb

with Adaptador
.InsertCommand= CB.GetInsertCommand
.DeleteCommand= CB.GetDeleteCommand
.UpdateCommand= CB.GetUpdateCommand
end with


luego de esto puedes verificar como configuró el DeleteCommand y ver cual es
la diferencia con tu instruccion

si utilizas SQL puedes utilizar el SQLCommandbuilder


Saludos
Carlos Durán


"Edmundo J. Davila" escribió en el mensaje
news:
Hola :

Tengo el siguiente codigo para borrar registros:

Sub Eliminar()

If Me.BindingContext(Me.objCOSTO, "COSTO_HOJA_DATOS").Count > 0 Then

If MessageBox.Show("¿Esta seguro que desea eliminar el registro?",
"Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1) = DialogResult.Yes Then

Me.BindingContext(Me.objCOSTO,
"COSTO_HOJA_DATOS").RemoveAt(Me.BindingContext(Me.objCOSTO,
"COSTO_HOJA_DATOS").Position)

Me.objCOSTO.AcceptChanges()

MessageBox.Show("El registro ha sido borrado.", "Mensaje",
MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

Else

MessageBox.Show("No hay registros que eliminar.", "Mensaje",
MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

End Sub

En el texto del comando eliminar del dataadapter tengo:

DELETE FROM COSTO_HOJA_DATOS
WHERE (ID_TRANSACCION = @ID_TRANSACCION)

Aparentemente borra el registro, pero cuando me salgo y vuelvo de la forma
y entro nuevamente alli esta el registro que supuestamente borre. ¿que
estoy omitiendo?

De antemano agradezco sus comentarios.



Edmundo Davila














Preguntas similares