Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   restar horas, minutos en access (https://www.clubdelphi.com/foros/showthread.php?t=42654)

alfil123 19-04-2007 00:49:41

restar horas, minutos en access
 
hola amigos, les escribo para pedirles sus sabios consejos, bueno estoy haciendo un sistema de control de personal donde debe manejar la horas laboradas por los trabajadores, mi base de datos es access y los campos de hora de ingreso y salida son de tipo fecha, mi problema es que nose como puedo calcular las horas y minutos trabajados en un dia,
por ejemplo
el trabajador a0000 entra a las 8:00:00 y sale a las 12:00:10 bueno trabajo 4:00:10 horas, bueno este resultado me gustaria que me lo diera access pero desde delphi tambien estaria bien, este resultado lo tengo que llevar aun reporte donde debo sumar todas has horas trabajada entre dos fechas dadas,

Caral 19-04-2007 04:27:13

Hola alfil123
Que te de la hora access, no se, pero sacar la hora del delphi es facil asi:
un boton
tres edit
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
hora1, hora2: TTime;
horat: TTime;
begin
   hora1:= StrToTime(Edit1.Text);
   hora2:= StrToTime(Edit2.Text);
   horat := hora1 - hora2;
   Edit3.Text:= TimeToStr(horat) ;
end;
Si cambias los edit por los dbedit de la base de datos tendras la diferencia entre la entrada y la salida igualmente.
Saludos

Caral 19-04-2007 04:32:51

Hola
Se me olvido, para poner las horas hay que ponerlas con dos puntos asi:
Cita:

Edit1= 11:00
Edit2= 12:00
Edit3= 01:00 // resultado
Saludos

Lepe 19-04-2007 13:05:13

Mientras que no haya turnos de noche todo funcionará de maravilla, pero tenlo en cuenta por si acaso, si entra a las 23:00:00 y sale a la 1:00:00 de la madrugada, la resta dará 22 horas de diferencia. Si restas teniendo en cuenta la fecha y hora (formato dd/mm/yyyy hh:nn:ss) no tendrás problemas. Para esto hay que cambiar el tipo de campo y que almacene también la fecha.

Saludos

aldmoscardi 19-04-2007 16:15:24

Hola, mi experiecia personal me dice que no consideres los segundos, trabaja tomando las horas y los minutos, hace una funcion que te transforme las horas y minutos en minutos, luego realiza las operacion entre ellas y despues convertila en horas y minutos nuevamente.
si te interesan las funciones que yo utilice para realizar esos calculos mandame un mai a aldmoscardi@arnet.com.ar y te las paso saludos y suerte

Delfin 23-04-2007 02:50:42

Resta de horas
 
Yo tengo un problema similar. Quiero restar dos horas pero obtener el resultado en minutos. Algo como esto:

19:35:00 - 19:00:00 ----> y el resultado serian 35:00

alguien me puede ayudar??

aldmoscardi 23-04-2007 03:36:06

hola, con esta funcion convierto los minutos a horas

Código Delphi [-]
Function TDmod.MinToHours(minutos : Integer) : String;
var
    min      : String;
    Horas    : String;
    TotHs    : String;
    TotMin   : String;
begin
Decimalseparator := '.';
horas  := FloatToStr(minutos / 60);
min    := FloatToStr((Frac(minutos / 60) * 60));

TotHs  := FloatToStr(Int(StrToFloat(horas)));
TotMin := FloatToStrF(StrToFloat(min), FFFixed,1,0);
if Length(TotHs) = 1 then
  begin
    TotHs := '0' + FloatToStr(Int(StrToFloat(horas)));
  end;
if Length(TotMin) = 1 then
  begin
    TotMin := '0' + FloatToStrF(StrToFloat(min), FFFixed,1,0);
  end;
result :=  Toths + ':' + TotMin;
end;

///////////////////////////////////
la funcion para pasar de horas a minutos seria algo asi como:

Código Delphi [-]
Function HoursToMin(Horas : String) : Integer;
var
    CanHoras    : Integer;
    CanMinutos : Integer;
begin
   canHoras    := StrToInt(Copy(horas,0,2));
   CanMinutos := StrToInt(copy(horas, 3, 5));
   Result := CanHoras + CanMinutos; 
end;

Esta funcion retorna la hora en formati munutos, tene en cuenta que un dia tiene 1440 minutos al ser numeros enteres poder realizar todas las operaciones que desees y luego pasas ese resultado a la funcion minutos to horas y te retorna en formato hh:mm
Esto es un rebusque interesante ya que en el acces trabajar en formato de horas es un verdadero problema
saludos espero te sea util.
;)


La franja horaria es GMT +2. Ahora son las 15:45:52.

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