Registro FastReport
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
Só que eu quero listar só até o dia 30, mas preciso calcular até o dia 01/11.
Não sei se expressei direito.
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
Curtidas 0
Respostas
Marisiana Battistella
20/10/2014
No banco de dados é armazenada a data separada da hora?
Ou a cada registro de hora é armazenada uma data para aquele registro?
Ou a cada registro de hora é armazenada uma data para aquele registro?
GOSTEI 0
Dirceu Morais
20/10/2014
Sim.
Vem Separado.
Vem Separado.
GOSTEI 0
Marisiana Battistella
20/10/2014
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.
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.
GOSTEI 0
Jair N.
20/10/2014
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 ....
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 ....
GOSTEI 0
Dirceu Morais
20/10/2014
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.
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.
GOSTEI 0
Marisiana Battistella
20/10/2014
Você terá que fazer dois SELECT, uma para cada situação...
GOSTEI 0
Dirceu Morais
20/10/2014
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.
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.
GOSTEI 0
Marisiana Battistella
20/10/2014
Isso seria como um acumulador?
GOSTEI 0
Dirceu Morais
20/10/2014
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.
É 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.
GOSTEI 0