Ver Mensaje Individual
  #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
Reputación: 26
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