BUG de VB6

zbb
18 de Diciembre del 2002
Amigos:
Uso NT4 SP5, ACCESS 97,VB6 y ADO para conectarme a la base
El problema es cuando quiero realizar el grabado de la informacion, mi app actualiza 3 tablas
El problema aparece cuando deseo grabar, la grabacion se hace usando cnn.BeginTrans
Cuando se pregunta
If MsgBox("Desea guardar los Cambios?") = vbYes Then
cnn.CommitTrans
Else
cnn.RollbackTrans
End If
Si acepto: se graba sin problema
Si no acepto porque quiero cambiar alguna informacion que tengo en el form en las cajas de texto y luego quiero volver a grabar me sale el siguiente error:
"Row cannot be located for updating.Some values may have changed since ot was last read"
Esto lo hace tanto al grabar un registro por primera vez como cuando edito un registro
Buscando en la web de Microsoft encontre la explicacion de este BUG de VB6, pero la solucion que da no se ajusta a mi caso, pues mis campos numericos no tienen valor por default ni tengo campos autonumericos.
Articulos de Knowledge Base 300586 y el 294842
Por lo tanto no se como solucionarlo.
Por eso si alguien padecio del mismo problema como lo resolvio.
Saludos y muchas gracias desde ya

webJose
18 de Diciembre del 2002
Lo más sencillo es esto:

public sub GuardarCambios()
If MsgBox("Desea guardar los Cambios?") = vbNo Then
exit sub
end if

cnn.begintrans
on error goto errorenguardado
.....
cnn.committrans
exit sub

ErrorEnGuardado:
msgbox "Ocurrió el siguiente error al tratar de actualizar:" & vbcrlf & vbcrlf & err.description, vbcritical
cnn.rollbacktrans
end sub