![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
En vez de sumar las horas trabajadas te conviene usar un Timer que aumente cada un segundo una variable en 1.
Cuando el empleado ingresa, activas el timer, en el receso lo paras, luego lo activas cuando entra, y lo paras vuando sale. De esta forma te queda almacenado en la variable la cantidad de segundos que trabajo. En el evento OnTimer del Timer pones: seg:= seg+1; //Con esto se almacena la cantidad de segundo trabajados Para que te queden la cantidad de horas, minutos y segundos pones en el mismo evento: if seg>=60 then begin min:=min+1; seg:=0; end; if min>=60 then begin hor:=hor+1; min:=0; end; Para expresar la cantidad de horas trabajadas(usando TTable): Table1.FieldByName('Total').AsString:= IntToStr(hor)+':'+IntToStr(min)+':'+IntToStr(seg); Nunca use TQuery el codigo es para un TTable. Te queda a vos traducirlo. Espero que te sirva... |
|
#2
|
||||
|
||||
|
Cita:
// Saludos |
|
#3
|
|||
|
|||
|
ok muchas gracias
saludos
gracias lo intentare |
|
#4
|
|||
|
|||
|
El uso de un timer es muy impreciso , y muchisimo mas si se usa del modo que se ha sugerido, segun en que se esté usando el ordenador puedes tener un error desde un 5% hasta infinito. No es de recibo que un programa que controla a un empleado afirme que ha trabajado 3 horas cuando en realidad ha trabajado 4.
Lo mas sencillo es llamar a GetTickCount cuando se entra (da el tiempo que lleva encendido el equipo en milisegundos), volver a llamarlo cuando se sale y restar los dos valores. Al Entrar: Inicio:= GetTickCount Al Salir Fin:= GetTickCount; TiempoTotalEnMilisegundos:= TiempoTotalEnMilisegundos + (Fin - Inicio); Saludos |
|
#5
|
|||
|
|||
|
Cita:
|
|
#6
|
|||
|
|||
|
Que se reinicie el ordenador es algo que afecta a cualquier sistema que utilices sea gettickcount o la hora o lo que se te ocurra.
Si se reinicia el ordenador el programa que controla el tiempo se cerrará con lo que se sumara al tiempo total el tiempo que estuviese el programa en ejecucion, y este tiempo total se guardará en algun sistema permanente como una base de datos, etc. Cuando el ordenador vuelva a arrancar y el programa de control vuelva a ejecutarse se volverá a contar un nuevo período de uso. Saludos |
|
#7
|
|||
|
|||
|
gracias
Muchas gracias a todos
ya lo logre, nadamas me faltan hacer algunos arreglos y listo pero si surgen ideas nuevas por favor pongalas. saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|