Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Batidas da ABATFUN em linha por dia.


Posts Recomendados


  • Tópicos Que Criei:  284
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  2.117
  • Conteúdo/Dia:  0.32
  • Reputação:   10
  • Pontos/Conquistas:  13.363
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  45

Pessoal, alguém já tem pronto um sentença ou procedure que retorne as batidas do funcionários no RM Chronus (ABATFUN) por linha/dia em SQL Server?

PS: Sei que existe função de fórmula no Chronus mas não atende.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  23
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  174
  • Conteúdo/Dia:  0.03
  • Reputação:   3
  • Pontos/Conquistas:  1.109
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

Sebastião

Segue abaixo mas é para Oracle, talvez ajude na idéia :

1o Retorna Dia da Semana

--------------------------------------------------------------------------------

SELECT

DISTINCT DATA,

DATA DATAINT,

CASE WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('DOMINGO','SUNDAY') THEN 'DOM'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEGUNDA-FEIRA','MONDAY') THEN 'SEG'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('TERÇA-FEIRA','TUESDAY') THEN 'TER'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUARTA-FEIRA','WEDNESDAY') THEN 'QUA'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUINTA-FEIRA','THURSDAY') THEN 'QUI'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEXTA-FEIRA','FRIDAY') THEN 'SEX'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SÁBADO','SATURDAY') THEN 'SAB'

END AS DIASEMANA

FROM

AAFHTFUN

WHERE

DATA BETWEEN '21/05/2008' AND '21/05/2008'

UNION

SELECT

DISTINCT DATA,

DATA DATAINT,

CASE WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('DOMINGO','SUNDAY') THEN 'DOM'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEGUNDA-FEIRA','MONDAY') THEN 'SEG'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('TERÇA-FEIRA','TUESDAY') THEN 'TER'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUARTA-FEIRA','WEDNESDAY') THEN 'QUA'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUINTA-FEIRA','THURSDAY') THEN 'QUI'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEXTA-FEIRA','FRIDAY') THEN 'SEX'

WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SÁBADO','SATURDAY') THEN 'SAB'

END AS DIASEMANA

FROM

AABONFUN

WHERE

DATA BETWEEN '21/05/2008' AND '21/05/2008'

ORDER BY

DATA

--------------------------------------------------------------------------------

2o Retorna Espelho do Cartão

--------------------------------------------------------------------------------

SELECT

(CASE WHEN MINTOTIME(SUM(ENTR1),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(ENTR1),':') END) || ' ' ||

(CASE WHEN MINTOTIME(SUM(SAID1),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(SAID1),':') END) || ' ' ||

(CASE WHEN MINTOTIME(SUM(ENTR2),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(ENTR2),':') END) || ' ' ||

(CASE WHEN MINTOTIME(SUM(SAID2),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(SAID2),':') END)

FROM(

SELECT

MIN(BATIDA) ENTR1,

0 SAID1,

0 ENTR2,

0 SAID2

FROM ABATFUN

WHERE

CODCOLIGADA = '01'

AND CHAPA = '01008724'

AND DATA = '21/05/2008'

UNION

SELECT

0 ENTR1,

MIN(BATIDA) SAID1,

0 ENTR2,

0 SAID2

FROM ABATFUN

WHERE

CODCOLIGADA = '01'

AND CHAPA = '01008724'

AND DATA = '21/05/2008'

AND BATIDA <> (SELECT

MIN(BATIDA)

FROM ABATFUN

WHERE

CODCOLIGADA = '01'

AND CHAPA = '01008724'

AND DATA = '21/05/2008')

AND ROWNUM <= 2

UNION

SELECT

0 ENTR1,

0 SAID1,

ENTR2,

0 SAID2

FROM

(SELECT

BATIDA ENTR2, ROWNUM ORDEM

FROM ABATFUN

WHERE

CODCOLIGADA = '01'

AND CHAPA = '01008724'

AND DATA = '21/05/2008'

ORDER BY

BATIDA)

WHERE

ORDEM = 3

UNION

SELECT

0 ENTR1,

0 ENTR2,

0 SAID1,

SAID2

FROM

(SELECT

BATIDA SAID2, ROWNUM ORDEM

FROM ABATFUN

WHERE

CODCOLIGADA = '01'

AND CHAPA = '01008724'

AND DATA = '21/05/2008'

ORDER BY

BATIDA)

WHERE

ORDEM = 4)

--------------------------------------------------------------------------------

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  284
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  2.117
  • Conteúdo/Dia:  0.32
  • Reputação:   10
  • Pontos/Conquistas:  13.363
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  45

Oi Rafael essa eu já havia achado aqui no fórum, preciso de uma para SQL mesmo.

De qualquer forma obrigado.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  21
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  125
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  835
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  43

Eu também precisava dessa SQL para colocar no recibo de pagamento com as batidas do ponto mas não consegui fazer..

Espero que alguém consiga nos ajudar.

[]'s

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  3
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  55
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  52

Eu também precisava dessa SQL para colocar no recibo de pagamento com as batidas do ponto mas não consegui fazer..

Espero que alguém consiga nos ajudar.

[]'s

Esse tipo de tratamento é muito interessante..espero também por esse help....estou trabalhando com a mesma lógica para criar em SQL...se alguem conseguir antes, agradeço

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  902
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.855
  • Conteúdo/Dia:  1.34
  • Reputação:   311
  • Pontos/Conquistas:  106.691
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Desculpa ai,

mas poderia exemplificar como que está na tabela ABATFUN e como deseja que seja o resultado ?

Se for o que estou pensando, montei uma formula com sentença esses dias que poderá atender.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  284
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  2.117
  • Conteúdo/Dia:  0.32
  • Reputação:   10
  • Pontos/Conquistas:  13.363
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  45

Jair, a tabela guarda as batidas do funcionário em cada dia porém é um registro para cada batida, se o funcionário efetuou quatro batidas no dia são quatro registros.

Preciso do retorno assim:

batidas do dia 25/10/2008 =08:01 12:02 14:03 18:05

Existe um função de fórmula que traz esse resultado, ela até me atenderia, porém ela não funciona com o parametro novo que implementaram que é visualizar dados de todas as coligadas permitidas.

Se o funcionário é da coligada 1 e você está emitindo o relatório da coligada 2 a fórmula retorna batidas de um funcionário da coligada dois (meio sem sentido).

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  23
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  140
  • Conteúdo/Dia:  0.02
  • Reputação:   3
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  41

Qual o seu banco de dados?

Sql Server 2000

Sql Server 2005

Oracle

Abraço.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  284
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  2.117
  • Conteúdo/Dia:  0.32
  • Reputação:   10
  • Pontos/Conquistas:  13.363
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  45

O Banco é SQL 2000, sentença para Oracle nossa amigo Rbrito já postou logo acima.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  21
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  125
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  835
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  43

Existe um função de fórmula que traz esse resultado, ela até me atenderia, porém ela não funciona com o parametro novo que implementaram que é visualizar dados de todas as coligadas permitidas.

Se o funcionário é da coligada 1 e você está emitindo o relatório da coligada 2 a fórmula retorna batidas de um funcionário da coligada dois (meio sem sentido).

Oi Sebastião,

não entendi muito bem essa questão:

Nesse seu exemplo ele trabalha apenas na coligada 1 e no relatório emitido da coligada 2 esse funcionário está saindo mesmo não sendo funcionário? Isso não seria bug na versão?

ou ele é funcionário das 2 coligadas e está saindo as batidas de todas as coligadas no mesmo relatório?

Jair,

No Chronus tem uma função (fórmula) que retorna as batidas exatamente como precisamos, mas como o relatório será emitido no Labore, essa função não está disponível, por issa a SQL.

O problema é que não sabemos quantas batidas o funcionário tem naquele dia..

pensei em criar essa estrutura, mas realmente não consegui evoluir

LD01

SQL (SELECT BATIDA$ FROM ABATFUN WHERE DATA >=:DATA_INICIAL_ESPELHO

AND DATA <=:DATA_FINAL_ESPELHO)

(espelhar campo na Ld01.01)

LD01.01

espelho#1 fórmula (Decl batida, aux;

ExecSQL '01' e '02'

repita

setvar (aux, resultsql('01','batida')

ate count = resultsql ('02','qtde');

aux)

Sql01 Select a.batida from abatfun a where a.data =:espelho#1

Sql02 Select count(a.batida) from abatfun a where a.data =:espelho#1

mas como eu tenho uma fórmula que executa sql que precisa de um parâmetro dentro da LD, não sei se funcionaria...

Infelizmente não consegui testar, mas fica a dica se alguém tiver tempo para fazê-lo.

Abraços.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  284
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  2.117
  • Conteúdo/Dia:  0.32
  • Reputação:   10
  • Pontos/Conquistas:  13.363
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  45

Juliana, a pouco tempo foi implementado o seguinte recurso no gerador

Visualizar dados de todas coligadas, porém a fórmula está com problema ao usar esse recurso.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  49
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  219
  • Conteúdo/Dia:  0.03
  • Reputação:   2
  • Pontos/Conquistas:  1.587
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  52

Jully,

Não sei se adiantaria pra vc, mas vc já cogitou a possibilidade de gerar este recibo de pagamento no Chronus ?

Se isso não for um problema para o cliente (ter que entrar no Chronus para emitir) , acho que seria uma solução viável para você.

Abraço

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  21
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  125
  • Conteúdo/Dia:  0.02
  • Reputação:   0
  • Pontos/Conquistas:  835
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  43

gerar este recibo de pagamento no Chronus ?

Ivan,

O problema é que no Chronus também não terei a possibilidade de colocar LD's

com as tabelas do Labore (ex. PFFINANC, ETC...)

aí tratar todo o resto por SQL no Chronus é muito mais trabalhoso do que trazer as batidas pro Labore.

E os demais? o que acham?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  902
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.855
  • Conteúdo/Dia:  1.34
  • Reputação:   311
  • Pontos/Conquistas:  106.691
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Vamos lá... eu precisei fazer uma coisa semelhante a isso no RM Nucleus, que era pegar os registros de várias linhas e colocar tudo num campo único de retorno, mas vamos lá, adaptando:

Sentença SQL: 0003 - Busca Cidades nos Itens

Select isnull(i.Campolivre, ' ') CampoLivre, Valor
From Titmmov i (nolock) 
 left join ttrbmov t (nolock)
   on (t.idmov= i.idmov and t.codcoligada= i.codcoligada and t.nseqitmmov= i.nseqitmmov)
 left join tprd p (nolock)
   on (i.idprd = p.idprd and i.codcoligada = p.codcoligada)
Where i.campolivre is not null and codtrb = 'ISS' and codigoprd = '80.000.00.99.99' and
  i.idmov = :FRM_IDMOV and i.codcoligada = :FRM_Coligada

Formula 1: Coligada - CodColigada

COLIGADACORRENTE 

Formula 2: IDMOV - IdMov Corrente

TabMov('IDMOV', 'I')

Formula 3: 00005 - Monta ISS's detalhados no Corpo da NF

Decl( Retorno, ValorISS, Finaliza ); Execsql('0003'); Setvar(Retorno, ' ');
Repita 
 Setvar( ValorISS, ResultSQL('0003', 'Valor')); 
 Se ValorISS >0 
 Entao SetVar( Retorno, CONCAT ( Retorno, Substr (CONCAT2 ( ResultSql('0003', 'CampoLivre'), '......................... '),1,20)));
		  Setvar( Retorno, CONCAT2 ( Retorno, STR ( ResultSql('0003', 'Valor') , '######.##')))
 Senao 0 Fimse;	
 Se PROXREGSQL ('0003') = 1
 Entao  Setvar( Finaliza, 'Não' ); 	
		   Se ValorISS >0 Entao Setvar( Retorno, CONCAT ( Retorno, CHR(10) ) ) Senao 0 Fimse
 Senao Setvar( Finaliza, 'Sim' )
 FimSe
Ate Finaliza = 'Sim';
Retorno

---------------------------------------------

Bom, o que isso faz, no meu caso ?

Como tenho que imprimir os valores e descrição de todas Cidades ( Campolivre na Titmmov ), e imprimo isso na linha do Rodapé, o sistema não tem como imprimir várias linhas... se fosse numa LD, tudo bem, seriam impressos, de acordo com os ítens. Mas preciso de um "resumo" das linhas e os valores que busco da ttrbmov para o tributo ISS.

Então, com a sentença, varremos todos os registros que existem para o movimento corrente.

Carrego a mesma pela Fórmula e conforme o primeiro retorno, guardo numa variável, CampoLivre e Valor, se tiver mais linhas, coloco o CHR(10) que é um salto de linha, passo para próximo registro e repito o processo.

Ao final, tenho na minha variável "Retorno" todos os dados que precisarei imprimir, então, finaliza a fórmula e retorna o conteúdo total de uma só vez, me permitindo imprimir.

--------------------------------------------

Para o que o Junior quer, podemos fazer mais ou menos o mesmo, vou tentar montar algo aqui, vamos ver:

... já já completo aqui. Qualquer coisa, vai tentando montar por ai.

:huh:

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  902
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.855
  • Conteúdo/Dia:  1.34
  • Reputação:   311
  • Pontos/Conquistas:  106.691
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas:

Select top 100 CodColigada, Chapa, Data, 
   Batida, 
   case when (Batida/60) > 9 then cast((Batida/60) as varchar) 
		else '0'+cast((Batida/60) as varchar) end + ':' +  
   case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar)
		else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora
from abatfun 
where year(data) = 2008 and month(data) = 10 and day(data) = 20
order by codcoligada, Chapa, data, batida

Link para comentar
Compartilhar em outros sites

  • 2 anos depois...

  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  27
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas:

Select top 100 CodColigada, Chapa, Data, 
   Batida, 
   case when (Batida/60) > 9 then cast((Batida/60) as varchar) 
		else '0'+cast((Batida/60) as varchar) end + ':' +  
   case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar)
		else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora
from abatfun 
where year(data) = 2008 and month(data) = 10 and day(data) = 20
order by codcoligada, Chapa, data, batida

Ótimo a Jair, estava precisando exatamente disso. Obrigado!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  13
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  64
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  451
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  46

Bom dia!

Pessoal vejam a consulta abaixo se puder ajudar.

chapa, nome,cod.seção,par.coletivo,função,data,batidas do dia em linha(quantos registros forem feitos)

SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) /60) as varchar))) + cast((SUM(BATIDA1) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) %60) as varchar))) + cast((SUM(BATIDA1) %60) as varchar) as BATIDA1,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) /60) as varchar))) + cast((SUM(BATIDA2) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) %60) as varchar))) + cast((SUM(BATIDA2) %60) as varchar) as BATIDA2,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) /60) as varchar))) + cast((SUM(BATIDA3) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) %60) as varchar))) + cast((SUM(BATIDA3) %60) as varchar) as BATIDA3,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) /60) as varchar))) + cast((SUM(BATIDA4) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) %60) as varchar))) + cast((SUM(BATIDA4) %60) as varchar) as BATIDA4,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) /60) as varchar))) + cast((SUM(BATIDA5) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) %60) as varchar))) + cast((SUM(BATIDA5) %60) as varchar) as BATIDA5,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) /60) as varchar))) + cast((SUM(BATIDA6) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) %60) as varchar))) + cast((SUM(BATIDA6) %60) as varchar) as BATIDA6,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) /60) as varchar))) + cast((SUM(BATIDA7) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) %60) as varchar))) + cast((SUM(BATIDA7) %60) as varchar) as BATIDA7,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) /60) as varchar))) + cast((SUM(BATIDA8) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) %60) as varchar))) + cast((SUM(BATIDA8) %60) as varchar) as BATIDA8,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) /60) as varchar))) + cast((SUM(BATIDA9) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) %60) as varchar))) + cast((SUM(BATIDA9) %60) as varchar) as BATIDA9,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) /60) as varchar))) + cast((SUM(BATIDA10) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) %60) as varchar))) + cast((SUM(BATIDA10) %60) as varchar) as BATIDA10

FROM (SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,

CASE WHEN NRO=1 THEN BATIDA ELSE 0 END BATIDA1,

CASE WHEN NRO=2 THEN BATIDA ELSE 0 END BATIDA2,

CASE WHEN NRO=3 THEN BATIDA ELSE 0 END BATIDA3,

CASE WHEN NRO=4 THEN BATIDA ELSE 0 END BATIDA4,

CASE WHEN NRO=5 THEN BATIDA ELSE 0 END BATIDA5,

CASE WHEN NRO=6 THEN BATIDA ELSE 0 END BATIDA6,

CASE WHEN NRO=7 THEN BATIDA ELSE 0 END BATIDA7,

CASE WHEN NRO=8 THEN BATIDA ELSE 0 END BATIDA8,

CASE WHEN NRO=9 THEN BATIDA ELSE 0 END BATIDA9,

CASE WHEN NRO=10 THEN BATIDA ELSE 0 END BATIDA10

FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A.CHAPA, B.DATA ORDER BY A.CHAPA, B.DATA, B.BATIDA) NRO,

A.CHAPA, P.NOME, P.CODSECAO, A.CODPARCOL, F.NOME FUNCAO, B.DATA, B.BATIDA

FROM ABATFUN B, PFUNC P, APARFUN A, PFUNCAO F

WHERE P.CODCOLIGADA=B.CODCOLIGADA

AND P.CHAPA=B.CHAPA

AND P.CODFUNCAO=F.CODIGO

AND P.CODCOLIGADA=F.CODCOLIGADA

AND A.CHAPA=P.CHAPA

AND A.CODCOLIGADA=P.CODCOLIGADA

AND B.DATA between :PLN_B4_D and :PLN_B5_D

AND B.BATIDA IS NOT NULL

AND P.CODSITUACAO<>'D'

AND A.CODPARCOL IN ('0004','0005') ) TABELA ) TABELAO

GROUP BY CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA

ORDER BY CHAPA

Editado por fabio zettermann
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  27
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia!

Pessoal vejam a consulta abaixo se puder ajudar.

chapa, nome,cod.seção,par.coletivo,função,data,batidas do dia em linha(quantos registros forem feitos)

SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) /60) as varchar))) + cast((SUM(BATIDA1) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) %60) as varchar))) + cast((SUM(BATIDA1) %60) as varchar) as BATIDA1,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) /60) as varchar))) + cast((SUM(BATIDA2) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) %60) as varchar))) + cast((SUM(BATIDA2) %60) as varchar) as BATIDA2,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) /60) as varchar))) + cast((SUM(BATIDA3) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) %60) as varchar))) + cast((SUM(BATIDA3) %60) as varchar) as BATIDA3,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) /60) as varchar))) + cast((SUM(BATIDA4) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) %60) as varchar))) + cast((SUM(BATIDA4) %60) as varchar) as BATIDA4,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) /60) as varchar))) + cast((SUM(BATIDA5) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) %60) as varchar))) + cast((SUM(BATIDA5) %60) as varchar) as BATIDA5,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) /60) as varchar))) + cast((SUM(BATIDA6) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) %60) as varchar))) + cast((SUM(BATIDA6) %60) as varchar) as BATIDA6,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) /60) as varchar))) + cast((SUM(BATIDA7) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) %60) as varchar))) + cast((SUM(BATIDA7) %60) as varchar) as BATIDA7,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) /60) as varchar))) + cast((SUM(BATIDA8) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) %60) as varchar))) + cast((SUM(BATIDA8) %60) as varchar) as BATIDA8,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) /60) as varchar))) + cast((SUM(BATIDA9) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) %60) as varchar))) + cast((SUM(BATIDA9) %60) as varchar) as BATIDA9,

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) /60) as varchar))) + cast((SUM(BATIDA10) /60) as varchar)+ ':' +

REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) %60) as varchar))) + cast((SUM(BATIDA10) %60) as varchar) as BATIDA10

FROM (SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,

CASE WHEN NRO=1 THEN BATIDA ELSE 0 END BATIDA1,

CASE WHEN NRO=2 THEN BATIDA ELSE 0 END BATIDA2,

CASE WHEN NRO=3 THEN BATIDA ELSE 0 END BATIDA3,

CASE WHEN NRO=4 THEN BATIDA ELSE 0 END BATIDA4,

CASE WHEN NRO=5 THEN BATIDA ELSE 0 END BATIDA5,

CASE WHEN NRO=6 THEN BATIDA ELSE 0 END BATIDA6,

CASE WHEN NRO=7 THEN BATIDA ELSE 0 END BATIDA7,

CASE WHEN NRO=8 THEN BATIDA ELSE 0 END BATIDA8,

CASE WHEN NRO=9 THEN BATIDA ELSE 0 END BATIDA9,

CASE WHEN NRO=10 THEN BATIDA ELSE 0 END BATIDA10

FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A.CHAPA, B.DATA ORDER BY A.CHAPA, B.DATA, B.BATIDA) NRO,

A.CHAPA, P.NOME, P.CODSECAO, A.CODPARCOL, F.NOME FUNCAO, B.DATA, B.BATIDA

FROM ABATFUN B, PFUNC P, APARFUN A, PFUNCAO F

WHERE P.CODCOLIGADA=B.CODCOLIGADA

AND P.CHAPA=B.CHAPA

AND P.CODFUNCAO=F.CODIGO

AND P.CODCOLIGADA=F.CODCOLIGADA

AND A.CHAPA=P.CHAPA

AND A.CODCOLIGADA=P.CODCOLIGADA

AND B.DATA between :PLN_B4_D and :PLN_B5_D

AND B.BATIDA IS NOT NULL

AND P.CODSITUACAO<>'D'

AND A.CODPARCOL IN ('0004','0005') ) TABELA ) TABELAO

GROUP BY CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA

ORDER BY CHAPA

Nossa, que ótimo, era isso mesmo Fabio, ajudou muito, não conhecia ROW_NUMBER(), muito util mesmo, só adaptei alguma coisinha por aqui, mas deu tudo certo,

DECLARE @CHAPA INT = 00136,
	@DATAINICIAL_D DATETIME = '20101210',
	@DATAFINAL_D DATETIME = '20101210'				  

SELECT CHAPA, 
   NOME, 
   CODSECAO, 
   FUNCAO, 
   DATA,
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT1) /60) AS VARCHAR))) + CAST((SUM(ENT1) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT1) %60) AS VARCHAR))) + CAST((SUM(ENT1) %60) AS VARCHAR) AS ENT1,
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI1) /60) AS VARCHAR))) + CAST((SUM(SAI1) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI1) %60) AS VARCHAR))) + CAST((SUM(SAI1) %60) AS VARCHAR) AS SAI1,
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT2) /60) AS VARCHAR))) + CAST((SUM(ENT2) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT2) %60) AS VARCHAR))) + CAST((SUM(ENT2) %60) AS VARCHAR) AS ENT2,
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI2) /60) AS VARCHAR))) + CAST((SUM(SAI2) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI2) %60) AS VARCHAR))) + CAST((SUM(SAI2) %60) AS VARCHAR) AS SAI2,
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT3) /60) AS VARCHAR))) + CAST((SUM(ENT3) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(ENT3) %60) AS VARCHAR))) + CAST((SUM(ENT3) %60) AS VARCHAR) AS ENT3,
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI3) /60) AS VARCHAR))) + CAST((SUM(SAI3) /60) AS VARCHAR)+ ':' +
   REPLICATE('0', 2 - LEN(CAST((SUM(SAI3) %60) AS VARCHAR))) + CAST((SUM(SAI3) %60) AS VARCHAR) AS SAI3
FROM (SELECT CHAPA, 
		  NOME, 
		  CODSECAO,
		  FUNCAO, 
		  DATA,
		  CASE WHEN SEQUENCIA = 1 THEN BATIDA ELSE 0 END ENT1,
		  CASE WHEN SEQUENCIA = 2 THEN BATIDA ELSE 0 END SAI1,
		  CASE WHEN SEQUENCIA = 3 THEN BATIDA ELSE 0 END ENT2,
		  CASE WHEN SEQUENCIA = 4 THEN BATIDA ELSE 0 END SAI2,
		  CASE WHEN SEQUENCIA = 5 THEN BATIDA ELSE 0 END ENT3,
		  CASE WHEN SEQUENCIA = 6 THEN BATIDA ELSE 0 END SAI3
	 FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ABATFUN.CHAPA, 
								  ABATFUN.DATA 
						 ORDER BY ABATFUN.CHAPA, 
								  ABATFUN.DATA, 
								  ABATFUN.BATIDA) SEQUENCIA,
				  ABATFUN.CHAPA, 
				  PFUNC.NOME, 
				  PFUNC.CODSECAO,
				  PFUNCAO.NOME FUNCAO, 
				  ABATFUN.DATA, 
				  ABATFUN.BATIDA
			 FROM ABATFUN
			INNER JOIN PFUNC ON ABATFUN.CHAPA = PFUNC.CHAPA
			INNER JOIN PFUNCAO ON PFUNC.CODFUNCAO = PFUNCAO.CODIGO
			WHERE ABATFUN.DATA BETWEEN @DATAINICIAL_D AND @DATAFINAL_D
			  AND PFUNC.CODSITUACAO <> 'D') TBPONTOLINHA
  ) TBPONTOCOLUNA
WHERE CHAPA = @CHAPA
 AND DATA >= @DATAINICIAL_D
 AND DATA <= @DATAFINAL_D 
GROUP BY CHAPA, 
	 NOME, 
	 CODSECAO, 
	 FUNCAO, 
	 DATA

brigadão mesmo. Abraços.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  27
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  205
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas:

Select top 100 CodColigada, Chapa, Data, 
   Batida, 
   case when (Batida/60) > 9 then cast((Batida/60) as varchar) 
		else '0'+cast((Batida/60) as varchar) end + ':' +  
   case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar)
		else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora
from abatfun 
where year(data) = 2008 and month(data) = 10 and day(data) = 20
order by codcoligada, Chapa, data, batida

Agora a questão é a seguinte, preciso converter em horas o atraso do funcionario (AAFHTFUN.ATRASO (me corrijam se nao for esta)). Tentei aplicar a mesma fórmula mas o valor não bate. Alguém tem uma sugestão? Obrigado!

Link para comentar
Compartilhar em outros sites

  • 1 mês depois...

  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  11
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  65
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  41

Pessoal, alguém já tem pronto um sentença ou procedure que retorne as batidas do funcionários no RM Chronus (ABATFUN) por linha/dia em SQL Server?

PS: Sei que existe função de fórmula no Chronus mas não atende.

Precisei fazer isto outro dia, montei o script abaixo e atendeu meu caso.

SELECT A.CODCOLIGADA, A.CHAPA, A.DATA, MIN(B.BATIDA) 'ENT1', MIN(C.BATIDA) 'SAI1', MIN(D.BATIDA) 'ENT2', MIN(E.BATIDA) 'SAI2'

FROM AAFHTFUN A

LEFT JOIN ABATFUN B ON A.CODCOLIGADA=B.CODCOLIGADA AND A.CHAPA=B.CHAPA AND A.DATA=B.DATA AND B.NATUREZA%2=0

LEFT JOIN ABATFUN C ON A.CODCOLIGADA=C.CODCOLIGADA AND A.CHAPA=C.CHAPA AND A.DATA=C.DATA AND C.NATUREZA%2=1 AND C.BATIDA>B.BATIDA

LEFT JOIN ABATFUN D ON A.CODCOLIGADA=D.CODCOLIGADA AND A.CHAPA=D.CHAPA AND A.DATA=D.DATA AND D.NATUREZA%2=0 AND D.BATIDA>C.BATIDA

LEFT JOIN ABATFUN E ON A.CODCOLIGADA=E.CODCOLIGADA AND A.CHAPA=E.CHAPA AND A.DATA=E.DATA AND E.NATUREZA%2=1 AND E.BATIDA>D.BATIDA

WHERE A.CODCOLIGADA='1' AND A.CHAPA='01713' AND A.DATA BETWEEN '2011-01-16' AND '2011-02-15'

GROUP BY A.CODCOLIGADA, A.CHAPA, A.DATA

ORDER BY A.CODCOLIGADA, A.CHAPA, A.DATA

Nota : Normalmente o Chronus armazena as entradas com natureza par e as saídas com natureza ímpar na ABATFUN.

Nota2: Utilizei isto em relatório e formatei os campos com batidas para exibir o formato hora.

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.