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)
-   -   Recorrer Tabla, contar registro repetidos y escribir totales en otra Tabla (https://www.clubdelphi.com/foros/showthread.php?t=38716)

Lucas_diaz1810 25-12-2006 10:03:21

Recorrer Tabla, contar registro repetidos y escribir totales en otra Tabla
 
Saludos y bendiciones del Cielo para todos.

El asunto es el siguiente:

Tengo una tabla dbf conlas ausencias de los empleados de una quincena, esto significa que se repiten los que faltan mas de una jornada o dia de trabajo. Me gustaria poder contar las cantidades de ausencias de cada uno y ponerlo en una tabla diferente.

Las Tablas van mas o menos asi:

Ausencias
Codbar
codigoEmp
fecha (esto es las fecha en que falta a su trabajo)

AusContadas
Codbar
CodigoEmp
TotalFaltas

Si alguien puede ayudarme se lo agradeceria mucho, pues es urgente.

Att. Lucas

Lepe 25-12-2006 13:04:34

Mas que recorrer las tablas en delphi, usaremos un Tquery con su sentencia sql tal que así:

Código SQL [-]
select codigoEmp, count(fecha) from Ausencias
where codigoEmp = :codigo and (fecha between  :fechaini and fechaFin)
Porque supongo que querrás pedirlo entre dos fechas determinadas. Ya en Delphi:
Código Delphi [-]

// query1 tiene el sql anterior
query1.parambyname('codigo').Asinteger := 32;
query1.parambyname('fechaini').Asdate := datetimepicker1.date;
query1.parambyname('fechaFin').Asdate := datetimepicker1.date;
query1.Open;
if not query1.IsEmpty then
begin 
  query2.sql.text := 'update ausContadas set TotalFaltas = :totales where codigoEmp = :codigo';
  query2.parambyname('codigo').AsInteger := 32;
  query2.parambyname('totales').AsInteger := query1.Fields[1].Asinteger;
  query2.ExecSql;
end;


No sé si dbf podría hacer algo así, pruébalo ya que sería mejor:
Código SQL [-]
update ausContadas set TotalFaltas = 
                  ( 
                  select count(fecha) from Ausencias 
                  where codigoEmp = :codigo and (fecha between  :fechaini and fechaFin)
                  )
where codigoEmp = :codigo

En AusContadas, no entiendo como se pueden almacenar las faltas de todos los meses de un mismo empleado, por ejemplo.


Saludos.


La franja horaria es GMT +2. Ahora son las 17:37:55.

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