Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DBGrid no grabaaaa!!! (https://www.clubdelphi.com/foros/showthread.php?t=27610)

User_baja1 25-11-2005 13:00:57

DBGrid no grabaaaa!!!
 
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

Cita:

Empezado por clanmilano
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

Dbgrid
 
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

Cita:

Empezado por rocio84
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.


La franja horaria es GMT +2. Ahora son las 18:37:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi