FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
convertir fechas a dias
hola
tengo una aplicacion en produccion que consiste de un programa de control de reparaciones de equipos vendidos en la tienda donde trabajo, y se me ha notiifcado que esta produciendo unos pequeños errores logicos. la aplicacion es capaz de determinar el tipo de garantia de un equipo por medio de una fecha que se le introduce pero de vez en cuando despliega el resultado equivocado. ejemplo un aparato que es comprado en la tienda, tiene un año de garantia y a su vez este se divide en 3 meses de pieza y 9 meses de servicio tecnico. en el calculo yo reste una fecha introducida manual mente y la fechas actual que como resultado obtengo los dias que ese equipo posee en las manos del cliente. luego de acuerdo al resultado de la resta hago una condicion para validar la garantia de acuerdo a los dias que tiene el equipo. este metodo al parecer no es exacto del todo, la pregunta es existe alguna forma de convertir una fecha en dias, si es asi necesito que me hagan saber urgentemente. gracias de antemano salu2
__________________
Ivan Lora http://www.arrobasoft.da.ru Valientes son aquellas personas que triunfan donde otros fracasan. Bienaventurado los que nada esperan porque jamas seran defraudados. Última edición por @-Soft fecha: 28-08-2003 a las 14:32:13. |
#2
|
||||
|
||||
La parte entera de un TDateTime es la fecha en días... ¿Qué tipo de inexactitud has encontrado?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
hola
vamos a suponer que la variable vdias obtiene el resultado de la resta de fechas. las condicion seria asi: var ndias : variant; ndias := date - defechacompra.date; if ndias >= 0 and ndias <= 90 then begin edtipogarantia.text := 'COMPLETA'; end else if ndias > 90 and ndias <= 275 then begin edtipogarantia.text := 'SERVICIOS'; end else edtipogarantia.text := 'NINGUNA'; end; end; este es el codigo que utilizo para desplegar automaticamente el tipo de garantia. de vez en cuando si un en equipo ha sido comprado en fechas de 28/05/2003 este despliega el tipo de garantia NINGUNA teniendo que desplegar COMPLETA. espero que hallas podido comprender . gracias.
__________________
Ivan Lora http://www.arrobasoft.da.ru Valientes son aquellas personas que triunfan donde otros fracasan. Bienaventurado los que nada esperan porque jamas seran defraudados. |
#4
|
||||
|
||||
¿¿El código que me has pasado es exactamente el que estas usando??... No creo que lo sea, pues no compilaría...
Como primer punto, quiero sugerirte que si puedes evitar utilizar datos del tipo Variant, lo evites, como segundo te digo que del 28/05/2003 al día de hoy han pasado 92 días, por lo tanto el tipo de garantía es "Servicios"... Suponiendo que la fecha ingresada no va a ser mayor que la de hoy, he resumido tu código en esto: Suponiendo que la fecha ingresada no va a ser mayor que la de hoy, he resumido tu código en esto: Código:
var nDias: Integer; begin nDias := Trunc(Date - defechacompra.Date); if nDias <= 90 then edtipogarantia.text := 'COMPLETA' else if (nDias <= 275) then edtipogarantia.text := 'SERVICIOS' else edtipogarantia.text := 'NINGUNA'; end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
hola
pues dejame decirte que si compila, puesto que el sr. marcoszorrilla me hecho una mano, pero ese codigo es un ejemplo mas o menos para ver si comprendes lo que quiero decirte. debido a que la garantia se cumple de acuerdo a un rango de tiempo de 0 a 90 dias tiene garantia COMPLETA de 91 a 275 tiene garantia SERVICIOS mayor que 275 tiene garantia NINGUNA pero de vez en cuando la garantia esta en el rango de 0 a 90 dias y despliega el resultado de NINGUNO, ese es el problema, ¿Porque lo hace?, no lo se. otra cosa, que se supone que hace el comando Trunc que colocaste en el codigo. Saludo
__________________
Ivan Lora http://www.arrobasoft.da.ru Valientes son aquellas personas que triunfan donde otros fracasan. Bienaventurado los que nada esperan porque jamas seran defraudados. |
#6
|
||||
|
||||
El trunc lo pongo para poder guardar el dato en un entero, ya que solo no interesa la parte entera del dato, y en el caso de que sea fecha/hora y tenga decimales puede fallarnos.
Con respecto al error, el código que te he pasado no falla, el que tu me has pasado puedo suponer que has puesto al revés la resta (defechacompra.Date - Date), te de un número negativo y por eso te ponga ninguna, ¿Debugueaste paso a paso el código?... ¿Qué da en nDias cuando falla?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|