La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1736 - PROBLEMAS CON EL EVENTO BEFOREUPDATE DEL DBGRID
Autor:  Ximena Tamame
Estoy trabajando con VB 5.0, en el evento beforeUpdate del dbgrid tengo codigo que verifica que los datos introducidos por el usuario sean correctos.
De no serlo seteo la variable cancel a False, al ejecutar el programa cuando intento salir de una fila del dbgrid se lleva a cabo dicho evento, como los datos no son correctos se setea la variable cancel a false para que no se guarden los datos y el enfoque permanezca en la misma fila, pero visual basic me muestra el siguiente mensaje:
"no hay ningun registro activo", esto lo hace al salir del evento.
Si en el evento el unico codigo es setear la variable cancel, el mensaje que aparece es el siguiente:
"Esta accion fue cancelada por el objeto asociado". ¿Que es lo que ocurre? Siempre los mensajes aparecen cuando sale del evento.
Probe setear dicha variable a False en los eventos beforeInsert y beforeDelete y funcion correctamente.

  Respuesta:  Ximena Tamame
Se debe capturar el error en la rutina Error del dbgrid:
If DataError = 16389 Then
Response = vbDataErrContinue
End If
la linea response = vbDataErrContinue, hace que el programa continue (no se lleva a cabo los cambios en el dbgrid) y al usuario no le llega el error.

  Respuesta:  CARLOS ZANELLI
No entiendo bien que es la variable Cancel pero los mensajes que te da los envia el data asociado al dbgrid. Yo personalmente uso el evento rowcolchange (creo que es así) que me indica el número de fila y columna anterior (lastcol,lastrow). Cuando hago un cambio de columna o fila testea que había en la anterior, si esta bien sigue sino vuelve a la columna lastcol.
Los problemas son casi siempre por el data ("objeto asociado").
Cualquier duda consultame.