Fórum Somar o total de semanas de uma determinada tabela? #367470
02/01/2009
0
Preciso somar o total de semanas de uma determinada tabela.
Exemplo
tenho na tabela gravado assim
Não sei exatamente se nesta tabela ai tem 4 ou 5 semanas no total, pois não sei da onde começa contar a semana.
Só sei que fazendo uns testes aqui pra ver qual semana com uma função do dateUtils
ShowMessage(IntToStr( NthDayOfWeek(dm.cdsHistFaltasTempDATA_FALTA.AsDateTime)));
Vi que o resultado é este
Se o resultado é este então a soma das semanas seriam [b:6ff524c955]5 semanas neste periodo de datas.[/b:6ff524c955], segundo eu entendi.
Então como seria o código para varrer a tabela e somar as semanas?
function TrazResultSem
begin
with cdsHistFaltasTemp do
begin
First;
while not Eof do
begin
{Qual é o codigo pra trazer o resultado}
Next;
end;
end;
Result := {Soma dias da semana}
end;Espero ter me expressado corretamente na minha duvida.
Grato Adriano
Adriano_servitec
Curtir tópico
+ 0Posts
02/01/2009
Adriano_servitec
function TForm1.CountDSRsInPeriod: Byte; Var DSR: Array[1..6] of Byte; I: Byte; begin //Zera as variáveis Result := 0; for I := Low(DSR) to High(DSR) do DSR[I] := 0; With DM do begin if (not cdsHistFaltasTemp.Active) or (cdsHistFaltasTemp.IsEmpty) then Exit; dm.cdsHistFaltasTemp.First; while not dm.cdsHistFaltasTemp.Eof do begin Case NthDayOfWeek(cdsHistFaltasTempDATA_FALTA.AsDateTime) of 1: begin DSR[1] := 1; end; 2: begin DSR[2] := 1; end; 3: begin DSR[3] := 1; end; 4: begin DSR[4] := 1; end; 5: begin DSR[5] := 1; end; 6: begin DSR[6] := 1; end; end; dm.cdsHistFaltasTemp.Next; end; end; // Result recebe o valor dos DSRs // do período informado for I := Low(DSR) to High(DSR) do Result := Result + DSR[I]; end;
Mais não está me trazendo certo a sima da quantidade de semanas que tem na tabela.
Gostei + 0
02/01/2009
Builder
AAAAMMS
Onde teriamos:
AAAA = Ano
MM = Mês
S = Semana
O total de registros da tabela seria o total de semanas, já que não teriamos duplicações, porque o Ano e o Mês também seriam utilizados como identificadores.
Gostei + 0
02/01/2009
Adriano_servitec
Tipo pegar o que esta na tabela
26/11/2008
27/11/2008 = 1
30/11/2008 = 2
01/12/2008 = 3
09/12/2008 = 4
15/12/2008
16/12/2008 = 5
[b:1201c8c4b5]Total 5 semanas[/b:1201c8c4b5]
Acho que é assim a soma, mais não sei como fazer
Gostei + 0
02/01/2009
Builder
26/11/2008 = 4
27/11/2008 = 4
Chave no formato AAAAMMS = 2008114
30/11/2008 = 5
Chave no formato AAAAMMS = 2008115
01/12/2008 = 1
Chave no formato AAAAMMS = 2008121
09/12/2008 = 2
Chave no formato AAAAMMS = 2008122
15/12/2008 = 3
16/12/2008 = 3
Chave no formato AAAAMMS = 2008123
Considerando que tabela terá um campo denomidado chave (AAAAMMS onde A=Ano, M=Mes e S=Número da Semana) que terá apenas um registro único para cada valor (UNIQUE).
CHAVE
2008114
2008115
2008121
2008122
2008123
----------
Total de 5 chaves diferentes, que na verdade estarão representando as 5 semanas considerando também o ano e o mês para que uma semana do mês/ano X seja distinguida do mês/ano Y.
Na hora de incluir registros, procurar antes na tabela se a chave já existe. Se existir, apenas acumula demais campos (valores), senão inclui e registra valores.
Gostei + 0
02/01/2009
Adriano_servitec
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)