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
  #21  
Antiguo 04-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
se me ocurrio realizar lo sgte

Código Delphi [-]
   i : Integer;
   Ent1, Ent2, Ent3 : TTime;
   Sal1, Sal2, Sal3 : TTime;
begin
     i:= 1;
     For i:=1 to Marcado.RowCount-1 Do
         Begin
               If Marcado.Rows[i][2] = ' ' Then Ent1 := StrToTime('0') Else Ent1 := StrToTime(Marcado.Rows[i][2]);
               If Marcado.Rows[i][3] = ' ' Then Sal1 := StrToTime('0') Else Sal1 := StrToTime(Marcado.Rows[i][3]);
               If Marcado.Rows[i][4] = ' ' Then Ent2 := StrToTime('0') Else Ent2 := StrToTime(Marcado.Rows[i][4]);
               If Marcado.Rows[i][5] = ' ' Then Sal2 := StrToTime('0') Else Sal2 := StrToTime(Marcado.Rows[i][5]);
               If Marcado.Rows[i][6] = ' ' Then Ent3 := StrToTime('0') Else Ent3 := StrToTime(Marcado.Rows[i][6]);
               If Marcado.Rows[i][7] = ' ' Then Sal3 := StrToTime('0') Else Sal3 := StrToTime(Marcado.Rows[i][7]);
               Marcado.Rows[i][8] := IntToStr(MinutesBetween(Sal1,Ent1)+ MinutesBetween(Sal2,Ent2)+ MinutesBetween(Sal3,Ent3));
         End;

pero igual me esta dando el sgte error

el problema de esto es que hay dias en que no se marca tarjeta... u otras personas marcan solo 2 veces al día.. y otros 4 o 6 veces al día segun corresponda...



raised exception class EConvertError with message "' is not a valid time'.

Bueno..igual seguiré intentando...

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 04-04-2008 a las 00:42:13. Razón: agregar datos
Responder Con Cita
  #22  
Antiguo 04-04-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Mira, seguramente te servirá el siguiente ejemplo que acabo de probar:

- Coloca dos TDateTimePicker en el Form, sus propiedades Kind en dtkTime y un botón con el siguiente código en su OnClick:

Código Delphi [-]
ShowMessage(FormatDateTime('HH:MM:SS', DateTimePicker2.Time-DateTimePicker1.DateTime));

Y Listo, veras como funciona de bonito sin complicarte tanto la vida .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #23  
Antiguo 04-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Ahora veo lo que estas haciendo, es algo asi.
Saludos

Si tienes razon... el problema es que los datos los capturo de un reloj control biometrico de estos

entonces los datos que capturo son del sgte formato

Código:
 
1 01005 20080218 1519
1 02003 20080218 1525
1 01012 20080218 1525
0 01012 20080218 1526
1 06012 20080218 1533
1 06014 20080218 1535
1 02001 20080218 1537
0 02010 20080218 1538
0 02011 20080218 1538
1 02019 20080218 1544
1 01012 20080218 1749
0 06012 20080218 1821
0 06014 20080218 1822
donde :

la primera columna es el tipo de entrada
0 -> salida
1 -> entrada

la segunda columna es la ficha del trabajador
la tercera columna es la fecha
la cuarta columna es la hora

entonces eso lo traspaso a un tabla de SQL... (Horario) y se me almacena de la sgte forma

Hor_Numero -> Numero autoincremental
Per_Nro -> ficha del trabajador
Hor_Tipo -> Tipo de marcado (1 Entrada / 0 Salida )
Hor_Fecha -> Fecha y hora de marcado

para rescatar los datos de un trabajador en especifico realizo una consulta así.. ej. Ficha 1015

Código SQL [-]
Select Per_Nro, Hor_Tipo, 
       CONVERT(Char(10), Hor_Fecha, 103) As Fecha, 
       CONVERT(Char(8), Hor_Fecha, 108) As Hora
From Horario
Where Per_Nro=1015
Order By Fecha, Hora

con el siguiente codigo... traspaso los datos a un StringGrid... con el sgte formato:

Dia Semana / Fehca / ent 1 / sal 1 / ent 2 / sal 2 / ent 3 / sal 3 / total hras

el sgte codigo me genera un StringGrid de x Fila segun el rango de fecha que se haya señalado.. y además, me va agregando la el dia de la semana y la fecha en la primera y segunda columna del stringgrid

Código Delphi [-]
     Marcado.RowCount :=  Trunc(vFecH.Date - vFecD.Date)+2;
     i:= 1;
     For i:=1 to Marcado.RowCount-1 Do
         Begin
         Marcado.rows[i][0] := FormatDateTime('ddd', (Trunc(vFecD.Date-1)+i));
         Marcado.rows[i][1] := DateToStr(Trunc(vFecD.Date-1)+i);
         End;

despues si ejecuto este codigo me empieza a buscar segun la ficha ingresada y segun la fecha de la columna fecha del StringGrid.. los datos y los va distribuyendo dentro del StringGrid

Código Delphi [-]
     i:= 1;
     For i:=1 to Marcado.RowCount-1 Do
         Begin
              Datos.AQ_Horario.First;
              While Not Datos.AQ_Horario.Eof Do
              Begin
                   if Datos.AQ_Horario['Fecha'] = StrToDAte(Marcado.Rows[i][1]) Then
                   If Datos.AQ_Horario['Hor_Tipo'] = 0 Then
                      Begin
                           if Marcado.Rows[i][3] = '' Then
                              Marcado.Rows[i][3] := Datos.AQ_Horario['Hora']
                           Else
                           if Marcado.Rows[i][5] = '' Then
                              Marcado.Rows[i][5] := Datos.AQ_Horario['Hora']
                           Else
                              Marcado.Rows[i][7] := Datos.AQ_Horario['Hora'];
                      End
                   Else
                      Begin
                           if Marcado.Rows[i][2] = '' Then
                              Marcado.Rows[i][2] := Datos.AQ_Horario['Hora']
                           Else
                           if Marcado.Rows[i][4] = '' Then
                              Marcado.Rows[i][4] := Datos.AQ_Horario['Hora']
                           Else
                              Marcado.Rows[i][6] := Datos.AQ_Horario['Hora'];
                      End;
                   Datos.AQ_Horario.Next;
              End;
         End;

eso me entrega un resultado como el de la sgte imagen



como veras pueden haber dias que no tenga nada de marcado.. otros que solo han marcado 4 veces.. y otros seis veces...

Salu2

PS: estube revisando tu programa.. me parece genial.. pero tu de antemano le pides si marca 1, 2 , 3 o 4...
__________________
BlueSteel

Última edición por BlueSteel fecha: 04-04-2008 a las 01:28:41.
Responder Con Cita
  #24  
Antiguo 18-11-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
bueno mi pregunta es , como hora pero con segundos siempre en 00 sin tener q cambiarlo utilizando un dtpicker?, yo en la propiedad format del dtpicker coloq: HH:mm pero al gaurdar simpre em guarda con segundos en 52 y quisisera q lo guarde en 00 simpre, gracias a todos
Responder Con Cita
  #25  
Antiguo 18-11-2010
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Revisá la hora con la que inicia el componente. Seguramente esta tiene los 52 segundos (1:14:52), como el usuario solo puede cambiar horas y minutos, esto queda constante.

Otra opción es que trunques "a mano" los segundos que pueda traer... por ejemplo:

Código Delphi [-]
uses DateUtils;

function TruncateSeconds(const AValue: TDateTime): TDateTime;
begin
  Result := AValue - SecondOf(AValue) / SecsPerDay;
end;

Podrías probar la función así:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin
  Label1.Caption := DateTimeToStr(Now) + ' => ' + DateTimeToStr(TruncateSeconds(Now));
  Label2.Caption := DateTimeToStr(DatePicker1.DateTime) + ' => ' + DateTimeToStr(TruncateSeconds(DatePicker1.DateTime));
end;

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 00:28:32.


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