Fórum Registro FastReport #498392

20/10/2014

0

Bom dia,

Estou fazendo um relatório de horas extras e preciso que o ultimo dia não seja impresso.
Explicando:

No meu relatório eu calculo o intervalo de um periodo para outro.
Acontece que as vezes o funcionário trabalha: 16:00 as 23:00 intervalo 0:00 as 6:00 ou seja ele trabalhou "virado"
No meio do mês tá beleza, mas quando este é o ultimo registro
Dia   entrada saida  Intervalo   Entrada Saida    intervalo
...
28/10 00:00  06:00   16:00h      18:00    23:00     1:00h
29/10 00:00  06:00   16:00h      18:00    23:00     1:00h
30/10 00:00  06:00   16:00h      18:00    23:00     1:00h
01/11 00:00  06:00   16:00h      18:00    23:00     1:00h


Só que eu quero listar só até o dia 30, mas preciso calcular até o dia 01/11.

Não sei se expressei direito.
Dirceu Morais

Dirceu Morais

Responder

Posts

20/10/2014

Marisiana Battistella

No banco de dados é armazenada a data separada da hora?
Ou a cada registro de hora é armazenada uma data para aquele registro?
Responder

Gostei + 0

20/10/2014

Dirceu Morais

Sim.
Vem Separado.
Responder

Gostei + 0

20/10/2014

Marisiana Battistella

Uma idéia, seria aplicar um filtro por dia/mês e filtrar pelo mês que vc quer que retornem os registros.
Por exemplo, se o usuário informa um mês ou um período para gerar o relatório vc filtra pelo mês daquele período informado.
Responder

Gostei + 0

20/10/2014

Jair N.

Boa Tarde olha só...Se você não quer a última data de informação para cada funcionário pela óbvio você tem que retirar de sua consulta a
exemplo abaixo com objetivo de, não pegar a última data do funcionário...

SELECT r.*
FROM [relatório] r
LEFT JOIN (SELECT d.chave_funcionaro
, MAX (d.data) AS ultima_data
WHERE (d.data BETWEEN '2014-10-01' AND '2014-10-31')
FROM [relatório] d
GROUP BY d.chave_funcionaro
) u
ON (u.chave_funcionario = r.chave_funcionario)
AND (u.ultima_data = r.data)
WHERE (r.data BETWEEN '2014-10-01' AND '2014-10-31')
AND (u.chave_funcionario IS NULL)
ORDER BY ...

também pode ser o NOT IN ....
também pode ser o NOT IN ....
Responder

Gostei + 0

20/10/2014

Dirceu Morais

Seguinte,

Quando eu escolher o período 01/09/2014 a 30/09/2014, eu terei que acrescentar 1 dia, para poder fazer os calculos dos intervalos. Isso é moleza.
Só que ao mandar imprimir, quero que no FastReport, imprima somente a data que eu escolhi, ou seja, 01/09 a 30/09.

Grato.
Responder

Gostei + 0

21/10/2014

Marisiana Battistella

Você terá que fazer dois SELECT, uma para cada situação...
Responder

Gostei + 0

29/10/2014

Dirceu Morais

Obrigado pelo interesse.

Mas ainda não consegui o que estou precisando.

Estou precisando de outra coisa, somar a linha atual com a próxima linha, tipo assim:


linha Atual que esta sendo impressa: 20:00 as 23:00 -> intervalo = 03:00-23:00 = 4:00hs
Próxima linha "Não imprimiu ainda": 03:00 as 07:00 ->


Não sei se fui claro.
Isto queria fazer direto no FastReport.
Responder

Gostei + 0

29/10/2014

Marisiana Battistella

Isso seria como um acumulador?
Responder

Gostei + 0

29/10/2014

Dirceu Morais

Quase isso.

É que desenvolvi um relatório de intervalos (Interjornada e Intrajornada), então tenho que calcular as horas de intervalo que o funcionário teve durante determinado tempo.
Como a empresa tem muitos funcionarios e trabalha 24 horas por dia. Tem funcionário que trabalha a noite, outros durante o dia, ou seja, existe várias escala de trabalho.
Até um mesmo funcionário começa a trabalha a noite outras vezes durante dia, isto no mesmo periodo.

Mais ou menos assim meu relatório.

Dia entrada saida Intervalo Entrada Saida intervalo Entrada Saida Intervalo
...
26/10 04:00 06:00 16:00h 22:00 23:00 01:00h 01:00 03:00 5:00H**
27/10 08:00 12:00 02:00H 14:00 18:00 12:00h
28/10 00:00 06:00 16:00h 18:00 23:00 1:00h
29/10 00:00 06:00 16:00h 18:00 23:00 1:00h
30/10 00:00 06:00 16:00h 18:00 23:00 1:00h


** Esse periodo é que preciso calcular
(Saida para o intervalo 3:00H do dia 26/10 até as 08:00H do dia 27/10)

É isso.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar