- Este tópico contém 6 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 9 meses atrás por
leo_jf.
-
AutorPosts
-
31 de maio de 2010 às 9:57 pm #94328
leo_jf
ParticipanteSrs, tudo bom?
Estou um pouco sumido, mas tudo blz!Preciso de uma pequena ajuda, se alguém puder me ajudar.
Preciso criar, em bloco pl/sql, uma rotina para buscar quem teve
acesso em determinado setor, em horário de trabalho, que não é permitido.
Considerando que o acesso da TBL1 seria o acesso a catraca restrita, e esse acesso é registrado na tabela TBL1 da seguinte forma:
cada acesso é gravado uma linha.
E a TBL2 são os acesos de ponto, controlados por outro sistema, e tem a seguinte regra:
o sistema monta vários pares.Tenho uma tabela com os registros:
TBL1
DATA HORARIO TIPO FUNCIONARIO
31/05/2010 08:10 ENTRADA S100
31/05/2010 08:50 SAIDA S100 …TBL2
A tabela de ponto com os pares:DATA HORARIO_ENTRADA HORARIO_SAIDA FUNCIONARIO
31/05/2010 08:05 17:10 S100
31/05/2010 11:50 12:50 S100
31/05/2010 17:10 19:50 S100 …No exemplo acima será gerado um txt mostrado que no dia 31/05/2010, teve uma
irregulariedade, pois houve um acesso em um ambiente restrito às 08:10, entretanto
o funcionario começou a trabalhar 08:05.31 de maio de 2010 às 10:11 pm #94329Regis Araujo
ParticipanteFala Leo.. boa tarde..!
Tenta explicar como que se pega uma irregularidade.. pois esta é a duvida.. como que identifica que houve irregularidade nos acessos..!!
Abraços..!
31 de maio de 2010 às 10:12 pm #94331burga
ParticipanteQuais os tipos destes campos de horarios?
Se for varchar2, você pode coverter tudo pra data e fazer:
select *
from tbl1 join tbl2
on tbl1.data = tbl2.data and tbl1.funcionario = tbl2.funcionario
and to_date(tbl1.horario,'hh24:mi:ss')
between to_date(tbl2.horario_entrada,'hh24:mi:ss')
and to_date(tbl2.horario_saida,'hh24:mi:ss')
where tbl1.tipo = 'ENTRADA';Algo assim, e jogar o resultado no arquivo usando utl_file.
31 de maio de 2010 às 10:24 pm #94332leo_jf
ParticipanteBlz,
Gte!Os horarios são number. Nem precisa alterar essa parte.
E é considerado irregular quando há um acesso na tabela TBL1 durante o horario da TBL2.No exemplo que dei é exatemente um caso de irregular, pois o funcionario entrou na catraca às 08:10, mas bateu o ponto às 08:05, ou sejá so não seria irregular se fosse ao contrário:
Veja novamente a tabela:TBL1
DATA HORARIO TIPO FUNCIONARIO
31/05/2010 08:10 ENTRADA S100
31/05/2010 08:50 SAIDA S100 …TBL02
DATA HORARIO_ENTRADA HORARIO_SAIDA FUNCIONARIO
31/05/2010 08:05 17:10 S100
31/05/2010 11:50 12:50 S100
31/05/2010 17:10 19:50 S100 …Entenderam?
31 de maio de 2010 às 10:43 pm #94333leo_jf
ParticipanteResumindo:
Tenho dois cursores distintos, e preciso para cada data testar os devidos pares : tabela 1 e tabela 2, para a partir disso saber
se existe algum par (horario entrada e saida) na tabela 2, que exista no par da tabela 1, o que não pode acontecer.31 de maio de 2010 às 11:16 pm #94335Regis Araujo
ParticipanteOpa Leo..!
Ve se isto ajuda..!!
SELECT TBL1.FUNCIONARIO || ' ' || TBL1.TIPO || ' ' || TBL1.DATA || ' ' || TBL1.HORARIO AS "HORARIO_ENTRADA",
TBL2.FUNCIONARIO || ' ' || TBL2.DATA || ' ' || TBL2.HORARIO_ENTRADA || ' '|| TBL2.HORARIO_SAIDA AS "HORARIO_BATIDA_PONTO"
FROM TBL2, TBL1
WHERE TBL2.FUNCIONARIO = TBL1.FUNCIONARIO
AND TBL1.DATA = TBL2.DATA
AND TO_CHAR(TBL1.DATA || ' ' || TBL1.HORARIO, 'DD/MM/YYYY HH24:MI:SS')
BETWEEN TO_CHAR(TBL2.DATA || ' ' || TBL2.HORARIO_ENTRADA, 'DD/MM/YYYY HH24:MI:SS')
AND TO_CHAR(TBL2.DATA || ' ' || TBL2.HORARIO_SAIDA, 'DD/MM/YYYY HH24:MI:SS');
Fiz na correria aqui.. não sei se esta ultima concatenação esta certa..!!
Neste select ele tras 2 informações distintas.. qualquer coisa a ideia é esta..
Basta dar uma melhorada …!!
Abraços..!
1 de junho de 2010 às 12:08 am #94342leo_jf
ParticipanteFala Thunder, blz?
Na verdade preciso, não sei bem como, criar um bloco pl/sql mesmo para ir testando os pares de uma tabela com outra tabela.
Tabela 01 e tabela 02.Em Vb criei um vetor para ir testando (uma tabela em memoria).
-
AutorPosts
- Você deve fazer login para responder a este tópico.