Delphi - Problema al grabar con dbgrid

 
Vista:

Problema al grabar con dbgrid

Publicado por Judit (45 intervenciones) el 13/05/2006 14:34:26
Buenos Días!

Mi problema es el siguiente cuando estoy insertando en el dbgrid a veces cuando se esta haciendo tab se abre una linea en blanco y se queda ahi, no se borra, y cuando grabo por ende me da el error de clave nula, como hago para controlar cuando vaya a grabar que si hay una linea en el grid en blanco se elimine antes de dar el applyupdates en el clientedataset?

Gracias de antemano

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al grabar con dbgrid

Publicado por emilio (175 intervenciones) el 13/05/2006 15:41:01
Antes de llamar a ApplyUpdates has una llamada a CheckBroseMode; Este procedemiento chequea el estado de la tabla: Si la tabla esta en estado de insercion y no se ha modificado el registro lo deshace(Cancel o ReverdRecord), si la tabla esta en estado de insercion y el registro se modifico entonces llama a Post, para el estado de edicion ocurre lo mismo y si esta en modo de exploracion no hace nada.

Nota si la llamda a este procedimiento no te resuelve el problemas es porque de seguro que sin saber estas modificando el registro lo que no estas llenado el campo o los campos que son claves o requeridos, fijate en eso.

si tienes mas dudas podes escribirme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al grabar con dbgrid

Publicado por Judit (45 intervenciones) el 13/05/2006 20:57:54
Hola

gracias por responder, probe lo que me dijiste en el foro, pero me he dado cuenta que realmente como dices el problema esta en que por ej, cuando se inserta la linea en blanco el usuario a veces se mueve dentro de los campos aunque no llena nada, y por eso cuando le dan a grabar da el error de clave nula.

alguna idea de como puedo controlar que si no llenan ninguna columna en un dbgrid la elimine, y asi cuando le den a grabar no ocurra el problema?

Gracias anticipadas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Posible solucion

Publicado por Judit (45 intervenciones) el 18/05/2006 20:33:21
Con relación al punto expuesto he utilizado el siguiente código y hasta ahora lo he probado y me ha funcionado

CDS2.First;
while not CDS2.Eof do
begin
IF CDS2Cod_Prod.IsNull then
begin
CDS2.Delete;
CDS2.Next;
end;

Este código lo he puesto en el evento BeforeApplyUpdates del CDS2 (ClientdataSet del detalle), donde CDS2Cod_Prod es el campo clave que me da el error si se deja vacío.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar