Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   DBGrid me borra una celda (https://www.clubdelphi.com/foros/showthread.php?t=1641)

thunor 22-06-2003 19:54:19

DBGrid me borra una celda
 
Hola a todos.
Estoy realizando una aplicación en la que tengo dos tablas Paradox 7. Una contiene los datos de los clientes y la otra las reparaciones hechas por cada cliente (el programa controla un taller). Creé entonces una relación maestro/detalle entre ambas tablas. Todo esto funciona perfectamente.
Mi problema es que la tabla de reparaciones guardo la fecha en la que comenzó la reparación. Por esta razón, y para "automatizar" el proceso, cada vez que me sitúo en la columna de fecha de inicio, introduzco la fecha del sistema automáticamente. Aquí os pongo el código para que lo veáis mejor:

Código:

procedure TFormularioReparaciones.ReparacionesListadoKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if key=9 then  // Si se pulsa tabulación...
  if TStringGrid(ReparacionesListado).col=4  then  // Si la columna en la que está situado es la 4 (en la columna 4 está el campo INICIO
    ReparacionesListado.Columns[4].Field.text:=datetostr (date);  // Introduzco automáticamente en esa celda la fecha actual
end;

end.

El código funciona bien en el sentido de que sí añade la fecha, pero al hacer esto me borra el valor del campo anterior, el cual contiene el importe de la reparación.

¿A qué puede deberse esto?

Muchas gracias y saludos.

PD: probé a eliminar el código que añade la fecha y funciona correctamente. Además, sino pulso tabulación para cambiar de celda, también funciona correctamente.

marcoszorrilla 22-06-2003 20:59:58

Yo interceptaria la entrada en la columna por una parte, y por otra que estuvieramos añadiendo un nuevo registro, ya que si estuvieramos en edición, es decir modificando un dato ya existente no procedería que nos modificará la fecha.

Código:

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
if (TstringGrid(Dbgrid1).col = 2) and (DataSource1.State in [dsInsert]) then
Table1Fecha.Value:=Date;
end;

Por otra parte yo le adjudicaría directamente el valor al campo fecha, como en el ejemplo.

Un Saludo.

thunor 22-06-2003 21:18:27

Muchas gracias. He probado el código que me comentaste y funcionó a la perfección.

No obstante, me gustaría saber si la propiedad state cambia su valor automáticamente.

Gracias nuevamente y saludos.

marcoszorrilla 22-06-2003 21:25:10

Pues sí, puesto que se trata de una propiedad que es de solo lectura, por lo tanto nosotros no podemos cambiar directamente dicha propiedad.

MiTabla.Append;

Provocaría que la propiedad se pusiera en dsInsert


MiTabla.Edit;

Lo pondría en dsEdit.

Por lo que en conclusión dicha propiedad nos dice en que estado se halla el DataSet y no nos permite cambiar directamente el mismo.

Un Saludo.

thunor 23-06-2003 01:08:04

Ok. Me has quitado una duda de encima. :)

Muchas gracias y saludos


La franja horaria es GMT +2. Ahora son las 01:21:40.

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