FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. ¿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. Última edición por thunor fecha: 22-06-2003 a las 20:00:52. |
#2
|
||||
|
||||
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; Un Saludo. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
Ok. Me has quitado una duda de encima.
Muchas gracias y saludos |
|
|
|