PDA

Ver la Versión Completa : DBGrid no grabaaaa!!!


User_baja1
25-11-2005, 13:00:57
Hola a todos,
Estoy usando un DBGrid para editar datos y ocurre lo siguiente:

Cuando un usuario modifica un registro y pulsa intro o hace clic en la siguiente columna o registro, entonces el registro se modifica bien.

El problema es cuando nada mas modificar el registro el usuario hace clic en la zona inferior del dbgrid (donde no hay registros), entonces automaticamente se cancela la edicion del registro y no guarda nada.

¿Sabes como solucionarlo??
He probado capturar eventos onexit onenter oncellclic para poner a mano un post y no puedo ya que estos eventos no se disparan.....

Nota:
he probado los componentes:
DBGrid, JvDbGrid y JvUltimateDBGrid y a todos les pasa lo mismo. Tambien he probado por la propiedad CancelOnExit=False y no funciona en este caso.

¿Podeis ayudarme?

Gracias a todos,
david.

clanmilano
25-11-2005, 13:30:09
De mi propia experiencia te podria decir que jamas dejo que un usuario modifique o inserte un registro directamente en una grilla. Yo coloco las grillas de forma no editable, es decir que si el usuario desea insertar o editar o borrar un registro realiza doble click o pulsa un boton para dar el alta o baja y abro un nuevo form que contiene los "edits" en el estado correcto (edit o insert) y alli coloca la info. Espero esto te sirva, la grilla puede ser muy practica pero causa esos problemas...suerteee

User_baja1
25-11-2005, 18:16:02
De mi propia experiencia te podria decir que jamas dejo que un usuario modifique o inserte un registro directamente en una grilla. Yo coloco las grillas de forma no editable, es decir que si el usuario desea insertar o editar o borrar un registro realiza doble click o pulsa un boton para dar el alta o baja y abro un nuevo form que contiene los "edits" en el estado correcto (edit o insert) y alli coloca la info. Espero esto te sirva, la grilla puede ser muy practica pero causa esos problemas...suerteee
Yo tambien lo hago asi pero la experiencia de los usuarios es que quieren modificar datos de forma rapida, por eso hay situaciones que requieren un grid modificable, por ejemplo para lineas de pedidos, albaranes ...etc. De esta forma no se bloquea toda la aplicacion al hacer showmodal, porque puede ser que al ir a insertar o modificar un valor el usuario necesite acceder a otra parte de la aplicacion.

Migpal
25-11-2005, 20:39:47
Bueno, comparto tambien la idea de no usar las grillas para editar o agregar registros. La verdad el DBgrid es terriblemente engorroso de controlar, yo prefiero usar frames detras de la grilla y mostrarla en cualquier intento de editar o agregar, de esta manera si existe un buscar se conserva en la pantalla, claro siempre y cuando sea MDI.

rocio84
25-11-2005, 20:59:05
A mi se me ocurre que podrias declarar una variable booleana Editando que la pongas a cierto con la accion OnBeforeEdit de la tabla que quieres modificar, y la vuelves a poner a falso en OnAfterEdit.
A continuacion, con la accione del raton OnMouseUp, comprobar si Editando esta a cierto, en cuyo caso podrias hacer un Post o volver a poner el cursor en la fila que se estaba editando.
No se si me he explicado, no se si es una buena soluccion, pero no se me ocurre otra cosa, espero que se sirva.

User_baja1
28-11-2005, 08:35:13
A mi se me ocurre que podrias declarar una variable booleana Editando que la pongas a cierto con la accion OnBeforeEdit de la tabla que quieres modificar, y la vuelves a poner a falso en OnAfterEdit.
A continuacion, con la accione del raton OnMouseUp, comprobar si Editando esta a cierto, en cuyo caso podrias hacer un Post o volver a poner el cursor en la fila que se estaba editando.
No se si me he explicado, no se si es una buena soluccion, pero no se me ocurre otra cosa, espero que se sirva.
A mi no me funciona y es que en el evento OnMouseUp ya no hay nada que hacer, porque el DbGrid ha cancelado la edicion.

Ya se que es un caso atipico pero es que te encuentras a todo tipo de usuarios. Yo por mi parte prefiero aceptar los cambios con [intro] o con [tab] pero los hay que quieren que se grabe con solo hacer clic en otro control o zona.