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 24-05-2007
Avatar de Goyo
Goyo Goyo is offline
Miembro
 
Registrado: feb 2006
Posts: 89
Poder: 19
Goyo Va por buen camino
Question sumar dias una fecha dada

Necesito saber como sumar dias a una fecha dada, para ello estoy utilizando 3 DBEdit de una tabla de Paradox, la idea es que cuando yo escriba la fecha con un DBDateTimeEditEh1 (DBEdit1) y sumar dias (DBEdit2) y como resultado me de otra fecha ya sumando los dias (DBEdit3).

DBDateTimeEditEh1 es un componente de la libreria EhLib que se asigna directamente a campo de mi Tabla TbEmpleados

Los campos son de tipo String:
FInicioLicencia : String : 10
FTerminoLicencia : String : 10
TotalDiasLicencia: Integer

el codigo que tengo es este:
Código Delphi [-]
procedure TFormLicencias.TotaldiasLicenciaChange(Sender: TObject);
begin
TerminaLicencia.Text:= FormatDateTime('dd/mm/yyyy', StrToDate(DBDateTimeEditEh1.Text) + StrToInt(TotaldiasLicencia.Text));
end;

de hecho al principio si lo hacia, pero ahora cuando ejecuto mi Aplicacion me manda el siguiente mensaje de error: (si le pongo como comentario a esta linea:
// TerminaLicencia.Text:= FormatDateTime('dd/mm/yyyy', StrToDate(DBDateTimeEditEh1.Text) + StrToInt(TotaldiasLicencia.Text));
se ejecuta bien mi aplicacion.

Cita:
Project PlantillaCAPASEG.exe raised exception class EConvertError with message " / / 'is not a valid date'.
y le vuelvo a pulsar ejecutar y me envia el siguiente error:
Cita:
Exception EConvertError in module PlantillaCAPASEG.exe at 0000872A ' / / 'is not a valid date'
La idea que tengo es que cuando yo capture todos los datos de los empleados estos se graben casi todos los campos (exepto FInicioLicencia, FTerminoLicencia, TotalDiasLicencia), para que cuando yo entre a dar Licencias (Permisos en el trabajo por X numero de dias), y utilizar un CheckBox al activar se activen los campos solicitados) y en el campo Estatus: sea igual a L (Licencia), A (Activo).

Código Delphi [-]
procedure TFormLicencias.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
     begin
 //    DBDateTimeEditEh1.Enabled:=True;
     TotaldiasLicencia.Enabled:=True;
     IniciaLicencia.Enabled:=True;
     TerminaLicencia.Enabled:=True;
     dm.TbEmpleados.FieldByName('Estatus').AsString:= 'L';
    end
     else
      begin
     dm.TbEmpleados.FieldByName('Estatus').AsString:= 'A';
      Totaldiaslicencia.Text:='';
      IniciaLicencia.Text:='';
      TerminaLicencia.Text:='';
     end;
end;

de momento saludos y gracias por su atencion.
Responder Con Cita
  #2  
Antiguo 24-05-2007
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
Resumiendo mucho el asunto los días lo mejor es que se los sumes al campo y no al Dbedit.

Código Delphi [-]
Table1Fecha.Value:=Table1Fecha.Value + StrToInt(edit1.Text);

Convendría poner un try....except porque puede que lo que introduzcan en el edit no sea un entero.

Edito porque veo que tienes un error de definición de campos, los campos deben de ser fecha y no texto. Deberías cambiar los campos a tipo fecha e incluso agregar un campo de tipo entero para poner los días que se le van a aplicar, nos ahorramos el try...except y además programando el evento OnChange de este campo resolvemos todo el problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 24-05-2007 a las 20:26:39.
Responder Con Cita
  #3  
Antiguo 24-05-2007
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Código Delphi [-]
uses  DateUtils ;
var    dia,mes,ano: Word;
begin
   dia:= DayOf(fecha);
   mes:= MonthOf(fecha);
   anio:= yearOf(fecha.Text);
   incAMonth(anio,mes,dia,1);
El 1 indica que aumeta dicha fecha en un mes, asi tambien
incADay(anio,mes,dia,1);
incAYear(anio,mes,dia,1);
Saludos, espero te sirva.
Responder Con Cita
  #4  
Antiguo 25-05-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
El componente D/Time Calculator te saca la diferencia entre dos fechas.

http://www.utilmind.com/delphi1.html
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
Problema al sumar días josejose Varios 5 26-01-2007 20:10:47
Problema al Sumar Días a cierta Fecha AGAG4 Varios 3 15-06-2006 21:56:29
Sumar dias a una fecha inicial en delphi bellota Varios 4 06-06-2006 16:42:40
SUmar dias a una fecha raffagia Varios 1 04-10-2004 18:28:13
Sumar Dias a una fecha? danytorres SQL 1 16-01-2004 05:04:15


La franja horaria es GMT +2. Ahora son las 04:18:51.


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