Visual Basic - El identificador de fila se refirió a una fila....

Life is soft - evento anual de software empresarial
   
Vista:

El identificador de fila se refirió a una fila....

Publicado por Antonio Belando (93 intervenciones) el 01/09/2009 06:49:50
Hola a todos.

Si borro un registro de una DataGrid relacionada con un RecordSet a través de un Botón, me borra el registro y me actualiza la DataGrid sin error.

Sin embargo, si lo borro pulsando la tecla "SUPRIMIR" que la tengo asociada al Botón referido en el párrafo anterior para borrar, lo borra igualmente pero me sale el siguiente error:

Microsoft DataGrid Control
El identificador de fila se refirió a una fila eliminada o a una fila marcada para eliminar.

Todos los Allow... de la DataGrid (DGLinPed) están en False excepto el AllowArrows.

El código asociado al botón de borrar es:

'Borrar registro actual de Líneas de Pedidos
Private Sub cmdBorrar_Click()
If rsLinPed.RecordCount = 0 Then Exit Sub
x = MsgBox("¿Está seguro de querer borrar la línea seleccionada?", _
vbYesNo + vbCritical + vbDefaultButton2)
If x = "6" Then
With rsLinPed
.Delete
.Update
.Requery
If .EOF Then
.MoveLast
Else
.MoveNext
End If
End With
End If
Set DGLinPed.DataSource = rsLinPed
DGLinPed.Refresh
DGLinPed.SetFocus
End Sub

Y el código asociado a la tecla de "SUPRIMIR" es:

Private Sub DGLinPed_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo VerError
'Si se ha pulsado INTRO
If KeyCode = vbKeyReturn Then
cmdMod_Click
'Si se ha pulsado la tecla INSERT
ElseIf KeyCode = vbKeyInsert Then
cmdAñadir_Click
'Si se ha pulsado la tecla SUPRIMIR
ElseIf KeyCode = vbKeyDelete Then
cmdBorrar_Click
'Si se ha pulsado la ecla ESCAPE
ElseIf KeyCode = vbKeyEscape Then
cmdSalir.SetFocus
cmdSalir_Click
Else
DGLinPed.SetFocus
End If
Exit Sub
VerError:
MsgBox Err.Description
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:El identificador de fila se refirió a una fila.

Publicado por juan carlos (518 intervenciones) el 02/09/2009 02:26:17
hola Antonio lee el codigo de abajo

El código asociado al botón de borrar es:

'Borrar registro actual de Líneas de Pedidos
Private Sub cmdBorrar_Click()
If rsLinPed.RecordCount = 0 Then Exit Sub
x = MsgBox("¿Está seguro de querer borrar la línea seleccionada?", _
vbYesNo + vbCritical + vbDefaultButton2)
If x = "6" Then
With rsLinPed
.Delete
.Update
.Requery
If .EOF Then <<<=== ' este es el posible error el if
.MoveLast
Else
.MoveNext
End If
End With
End If
Set DGLinPed.DataSource = rsLinPed
DGLinPed.Refresh
DGLinPed.SetFocus
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El identificador de fila se refirió a una fila.

Publicado por Antonio Belando (93 intervenciones) el 02/09/2009 15:15:02
Solucionado, cambiando el foco al botón antes de llamar a la funcion cmdBorrar_Click:

'Si se ha pulsado la tecla SUPRIMIR
ElseIf KeyCode = vbDeyDelete Then
'Cambiar el foco
cmdBorrar.SetFocus
cmdBorrar_Click
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El identificador de fila se refirió a una fila.

Publicado por christian (1 intervención) el 22/05/2010 21:29:44
simple.... despues de mil buskedas y de mil personas que sin saber kieren ke tu aprendas encontre la simple solucion que cuando estas dentro del datagrid hay posicionador ke indica en ke fila estas..... bueno este posicionador es el ke te da el error..... si solo agregas una linea mas al presionar la tecla supr antes de ke empieze a borrar...esto es ke inmediatamente despues ke presiones la tecla supr o del manda el focus a otro objeto del form. y listo el error dejara de aparecer...

sale bye... ya estamos a 2010 pero en fin puede haber otro ke ande buscando solucion pues aki esta.......

gracias. por nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El identificador de fila se refirió a una fila.

Publicado por Marcos Piantoni (1 intervención) el 05/11/2010 05:13:41
Hola antonio... Se que pasó un año y ya lo soluionaste. Pero si otra persona tiene el mismo problema le voy a dar la solucion que utilizo para todos mis sistemas y funciona al %100. Nada de codigos extraños ni complejos los datagrid funcionan de maravillas escepto por este error tan extraño, que en realidad no es un error porque todo funciona de maravillas escepto por ese molesto mensaje que se quita de la siguiente forma...
No sirve Adodc1.Recordset.Requerry , ni refresh ni update

Lo que tienen que hacer es mover el registro antes de borrarlo. La forma más simple de hacerlo es

Adodc1.Recordset.MoveNext
Adodc1.Recordset.MovePrevious
Adodc1.Recordset.Delete

Con este pequeñito movimiento ya no aparece ese molesto mensaje... El que quiera agradecerme escribame a mi correo!
SALUDOS AMIGOS ESPERO HABER AYUDADO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El identificador de fila se refirió a una fila.

Publicado por Jose Jara (1 intervención) el 21/02/2014 18:57:42
Si me funciono.
Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El identificador de fila se refirió a una fila.

Publicado por Cristián M_ad1994@hotmail.com (1 intervención) el 13/11/2014 05:18:26
Hola quiero saber si me pueden ayudar soy nuevo en esto de programar y estoy tratando de borrar un registro con un .delete de una consulta y lo hace pero me da el error de identificador de fila se refirió a una fila eliminada o a una fila marcada para eliminar. Y no se que mas hacer no se cono moverlo ni nada. Agradezco cualquier ayuda hay dejo mi correo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar