Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2003
thunor thunor is offline
Registrado
 
Registrado: may 2003
Ubicación: En frente del ordenador
Posts: 7
Poder: 0
thunor Va por buen camino
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.

Última edición por thunor fecha: 22-06-2003 a las 20:00:52.
Responder Con Cita
  #2  
Antiguo 22-06-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 22-06-2003
thunor thunor is offline
Registrado
 
Registrado: may 2003
Ubicación: En frente del ordenador
Posts: 7
Poder: 0
thunor Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 22-06-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 23-06-2003
thunor thunor is offline
Registrado
 
Registrado: may 2003
Ubicación: En frente del ordenador
Posts: 7
Poder: 0
thunor Va por buen camino
Ok. Me has quitado una duda de encima.

Muchas gracias y saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:09:17.


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
Copyright 1996-2007 Club Delphi