PDA

Ver la Versión Completa : duda grid editable: lineas vacías


HomeCinema
27-04-2007, 11:26:05
Hola, me gustaría saber que puedo hacer para permitir que la flecha abajo me deje insertar un registro en un grid pero sin tener el problema de que si a continuación le doy a la flecha arriba me de el error de que no tiene clave ( lógico porque el nuevo registro insertado está vacio ) ¿Hay alguna forma de eliminar estos registros vacíos comodamente o algun procedimiento que se ejecute en algun evento para ello? gracias de antemano

Troffed
27-04-2007, 19:05:06
En el BeforePost haz un Abort si no quieres el registro.

HomeCinema
02-05-2007, 12:42:00
He hecho el abort en el evento pero se me queda clavado en ese registro, es decir, no me da error pero no me deja subir al de arriba. He probado a posicionarlos y sigue clavado. En mi grid tengo dos columnas donde introduzco valores y el resto son solo para mostrar.
¿Podrías poner brevemente el código que usas en este evento? Gracias ;)

Lepe
02-05-2007, 14:05:29
En dicho evento, puedes mirar el valor de clave primaria, y si es null, Cancelar en lugar de abortar.


if tabla1CAmpoprimario.isnull then
tabla1.Cancel;


Abort lanza una excepción silenciosa, por ese motivo se corta el flujo del programa, quedando el registro en modo edición pero sin guardar.

Edito: Al intentar cambiar de registro, el Dataset realiza un Post de la tabla, por tanto, se vuelve a lanzar otra vez un Abort, y te quedas "clavado" en ese registro.

Saludos

HomeCinema
02-05-2007, 14:37:12
Si hago un cancel me salta la excepción KEY VIOLATION. Una vez aceptado el dialogo que sale, el registros se observa que se borra con exito. He intentado capturar el error para que no lo muestre. ¿Cómo evitas que salga eso?

Lepe
02-05-2007, 16:47:22
¿Qué Base de datos usas? o el sistema gestor de bases de datos.

Es muy raro que salte una excepción al cancelar, puede que estés usando otro evento que provoque un post.

¿qué clase de campo es la clave primaria? un autoincremento, un generador....

Saludos

roman
02-05-2007, 20:04:41
Quizá esté afectando algún otro evento. Porque yo hago la prueba como se describe orginalmente (flecha abajo, seguido de flecha arriba) y no pasa nada, simplemente se cancela la inserción sin necesidad de manejar ningún evento. Esto incluso teniendo llave primaria la tabla y campos requeridos.

// Saludos