Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2008
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question Restar dos fechas

Hola a todos
Tengo la siguiente duda, quiero restar dos campos tipo Date pero no se como hacerlo. Las fechas son almacenadas en la tabla como 08/29/2008 08:32:55 a.m. Los campos son FECHAMONTAJE tipo Date y HORAINICIO tipo Date lo que quisiera lograr es
09/09/2008 11:51:02 a.m. – 09/09/2008 11:50:45 a.m. = 09/09/2008 00:00:17
Manejo Interbase y Delphi5...Gracias por la ayuda que me puedan brindar.
__________________
Alejandrina
Responder Con Cita
  #2  
Antiguo 09-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Solo tienes que hacer la operación de resta, en Delphi podría ser algo como:

Código Delphi [-]
var
  Fecha: TDateTime;

begin
  Fecha := DataSet.FieldByName('FechaMontaje').AsDateTime - DataSet.FieldByName('HoraInicio').AsDateTime
end;

Y desde SQL solo tendrías que hacer algo como:

Código SQL [-]
select FechaMontaje - HoraInicio Fecha, campo1, campo2 from tabla


Saludos...
Responder Con Cita
  #3  
Antiguo 12-09-2008
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Question

Hola,
No se que estoy haciendo mal eh seguido las instrucciones y me esta mostrando un error EOleError....'Variant does not reference an automation object'... el codigo que tengo es el siguiente:
Código Delphi [-]
procedure TFrmFinalizacionMontaje.RBFirmaMontadorClick(Sender: TObject);
var diferencia:TDateTime;
begin
  if (userw<>'J704') or (userw<>'M800') or (userw<>'P705')or (userw<>'SYSDBA') then
    begin
      Dmsip2.TblFormatoFinalizacion.Edit;
      Dmsip2.TblFormatoFinalizacion['FIRMAMONTAJES']:='X';
      Dmsip2.TblFormatoFinalizacion['USUARIOMONTAJES']:=userw;
      DBEUsuarioMontajes.Text:=userw;
      DBEFechaMontador.Text:=DateTimeToStr(now);
      EHoraMontajes.Text:=copy(DBEFechaMontador.Text,12,13);
      Dmsip2.TblFormatoFinalizacion.Post;
      diferencia:=DmSip2.TblFormatoFinalizacion['FECHAMONTAJES'].AsDateTime - 
       DmSip2.TblFormatoFinalizacion['HORAINICIO'].AsDateTime;
    end

Ayuda!
__________________
Alejandrina

Última edición por dec fecha: 12-09-2008 a las 15:04:14.
Responder Con Cita
  #4  
Antiguo 23-09-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Hola Alejandrina....

Creo que no es posible hacer esta diferencia del modo que lo palnteas... Si restas una fecha de otra, lo que te resulta es un número entero que indica los dias .... por tanto tu variable "diferencia" no puede ser TDateTime...

Recuerda que la mayoría de los sistemas tienen una fecha mínima de partida... creo que es 01/01/1900 (no se si sea el caso de Delphi)...

Bueno, el caso es que si restas 2008-09-23 de 2008-09-01 la diferencia será 22 (dias). Pero mira esto:

Si le restas (o sumas) un número entero a una fecha, obtienes una fecha..!!!

Puedes entonces hacer:

Código Delphi [-]
   intdiferencia := FechaMayor - FechaMenor;
   NuevaFecha := FechaMayor - intDiferencia;

Espero que te sirva, aunque un poco tarde....

Saludos,

Última edición por gatosoft fecha: 23-09-2008 a las 14:54:19. Razón: Error gramatical
Responder Con Cita
  #5  
Antiguo 23-09-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No entiendo muy bien lo que quieres obtener, pero te aconsejo usar las funciones de la unidad Dateutils:
- DaysBetween
- HoursBetween
- MinutesBetween
-MillisecondsBetween
- etc.

Otra forma, es usar los trucos de ClubDelphi, el buscador encuentra dos

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 23-09-2008
Avatar de Alejandrina
Alejandrina Alejandrina is offline
Miembro
 
Registrado: mar 2007
Ubicación: Medellin
Posts: 46
Poder: 0
Alejandrina Va por buen camino
Hola a todos....muchas gracias por sus aportes me fueron de gran utilidad. En ultimas lo realice de la siguiente forma:
Código Delphi [-]
Dmsip2.TblFormatoPedido.Edit;
      diferencia:=DmSip2.TblFormatoPedido['FECHAMONTAJES']- DmSip2.TblFormatoPedido['HORAINICIO'];
      DecodeTime(diferencia, Hora, Min, Seg, Mili);
      DBEDiferenciaMontador.Text:=IntToStr(Hora)+':'+IntToStr(Min)+':'+IntToStr(seg);
      Dmsip2.TblFormatoPedido.Post;

Lo que aun sigo buscando es como hacer para que muestre cuando son mas de 24 horas...
__________________
Alejandrina

Última edición por Alejandrina fecha: 25-09-2008 a las 21:18:26.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
restar dos fechas luxus OOP 2 06-08-2008 22:07:34
restar fechas sql Oraxtar SQL 16 21-01-2008 22:01:44
Restar Fechas jsanchez OOP 2 08-02-2006 19:29:55
Restar fechas Acker Varios 4 07-11-2005 14:11:51
restar dos fechas seken Varios 4 15-08-2003 23:34:56


La franja horaria es GMT +2. Ahora son las 12:52:46.


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