none
Controle de Acesso RRS feed

  • Pergunta

  • Boa noite Pessoal,

       Gostaria de saber como fazer para verificar uma determinada sequencia de registro de acesso nos equipamentos. Tenho a seguinte tabela:

    DATA MATRICULA PESSOA EQUIPAMENTO ORIGEM DESTINO SENTIDO SENTIDO TP_EVENTO NOME EQUIP.
    2014-01-01 05:55:10.000 73 MARIA JOSE DE MELO NASCIMENTO 2 1 2 Entrou Nas dependências do Hospital 1 10 CATRACA ENTRADA FUNCIONÁRIOS
    2014-01-01 06:01:50.000 73 MARIA JOSE DE MELO NASCIMENTO 3 2 3 Entrou No refeitório 1 10 CATRACA REFEITÓRIO
    2014-01-01 06:17:33.000 73 MARIA JOSE DE MELO NASCIMENTO 3 3 2 Saiu No refeitório 2 10 CATRACA REFEITÓRIO
    2014-01-01 11:37:10.000 73 MARIA JOSE DE MELO NASCIMENTO 3 2 3 Entrou No refeitório 1 10 CATRACA REFEITÓRIO
    2014-01-01 12:04:01.000 73 MARIA JOSE DE MELO NASCIMENTO 3 3 2 Saiu No refeitório 2 10 CATRACA REFEITÓRIO
    2014-01-01 16:34:00.000 73 MARIA JOSE DE MELO NASCIMENTO 3 2 3 Entrou No refeitório 1 10 CATRACA REFEITÓRIO
    2014-01-01 16:37:53.000 73 MARIA JOSE DE MELO NASCIMENTO 3 3 2 Saiu No refeitório 2 10 CATRACA REFEITÓRIO
    2014-01-01 17:35:09.000 73 MARIA JOSE DE MELO NASCIMENTO 2 2 1 Saiu Nas dependências do Hospital 2 10 CATRACA ENTRADA FUNCIONÁRIOS

    Neste exemplo o funcionário fez a ordem certa 

    1º passou na catraca de acesso ao hospital

    depois ele vez as suas refeições na catraca do refeitório entrada / saída

    e por fim no final do expediente ele passou sentido saída na catraca de funcionários 

    Mas se um dia ele não fizer a mesma ordem cronológica ( entrada catraca 1, entrada catraca 3, saida catraca3 e sadia catraca1)

    gostaria de gerar uma query com a data do ocorrido.

    att cirilo

    sábado, 13 de fevereiro de 2016 01:35

Todas as Respostas

  • Bom se bem entendi, você precisa gerar uma query SQL que lhe mostre a sequencia que o funcionario passou pelos equipamentos, um problema é que nem sempre ele seguira a mesma ordem isso dependerá muito do formato fisico que os equipamentos estão e também da ordem que esse funcionario pode passar pelos equipamento, eu tenho uma situação parecida onde tenho relogios de registro de ponto eletronico e catrcas de controle de acesso, o que eu faço é o seguinte.
    Eu gerou uma consulta mais ou menos assim

    SELECT DATA,
                 HORA,
                 MATRICULA,
                 EQUIPAMENTO,
                 SENTIDO (ENTRADA OU SAIDA),
    FROM    TABELA
    WHERE DATA = '2016/02/14'
    ORDER  BY DATA,HORA

    Dessa forma odenando por data e hora ou ate inserindo o sentido você tera um rastreio das informações
    Não sei se lhe respondi corretamento mas foi mais ou menos o que eu entendi


    Junior

    domingo, 14 de fevereiro de 2016 15:11
  • Cirilo,

    Utilize a cláusula ORDER BY na implementação da sua consulta.

    Esta cláusula irá garantir o ordenamento dos registros pela(s) coluna(s) que você utilizar na definição.

    Por gentileza dê uma conferida nos links abaixo:

    https://msdn.microsoft.com/pt-br/library/ms188385%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396

    https://technet.microsoft.com/pt-br/library/ms188723(v=sql.105).aspx


    Felipe Lauffer
    MCSA: SQL Server | MCP

    [ Blog ] - [ Profile ] - [ Wiki ] - [ Gallery ] - [ LinkedIn ]


    terça-feira, 16 de fevereiro de 2016 01:33
  • Cirilo,

    Em qual das suas tabelas existe algum campo que possamos fazer entender como um elemento de ordenação?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 18 de fevereiro de 2016 12:20
  • De acordo com tua tabela:

    DATA

    MATRICULA

    PESSOA

    EQUIPAMENTO

    ORIGEM

    DESTINO

    SENTIDO

    2014-01-01 05:55:10.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    2

    1

    2

    1

    2014-01-01 06:01:50.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    2

    3

    1

    2014-01-01 06:17:33.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    3

    2

    2

    2014-01-01 11:37:10.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    2

    3

    1

    2014-01-01 12:04:01.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    3

    2

    2

    2014-01-01 16:34:00.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    2

    3

    1

    2014-01-01 16:37:53.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    3

    3

    2

    2

    2014-01-01 17:35:09.000

    73

    MARIA JOSE DE MELO NASCIMENTO

    2

    2

    1

    2

    Você precisa de uma tabela de referência dizendo qual seria a sequência padrão para um funcionário ou grupo de funcionários, para então comparar com a sequência gravada em banco para os dias de movimentação.

    Mas se todos utilizam os mesmos equipamentos e seguem a mesma sequência, com a perspectiva, mas não obrigação, que o funcionário vá 3 vezes ao refeitório, você tem um padrão e baseado nesse padrão, você tem valores constantes.

    Digamos que sua tabela se chame MOVIMENTACAO, no dia você sempre terá para cada funcionário os mesmos valores para soma de equipamentos, origem e destino sempre serão iguais, pois se anulam, e o mesmo valor para soma de destinos.

    Posso checar se houve um desvio desse padrão através de uma checagem simples:

    SELECT SUM(M.EQUIPAMENTO) EQUIPAMENTO, SUM(M.ORIGEM) ORIGEM, SUM(M.DESTINO) DESTINO, SUM(M.SENTIDO) SENTIDO, MATRICULA, CONVERT(VARCHAR, DATA, 112) DATA
    FROM MOVIMENTACAO M
    GROUP BY M.MATRICULA, CONVERT(VARCHAR, DATA, 112)
    HAVING 
    SUM(M.EQUIPAMENTO) - SUM(SENTIDO) NOT IN (10, 7, 4, 1) OR
    SUM(M.ORIGEM) <> SUM(M.DESTINO)

    Att,


    Antero Marques






    quinta-feira, 18 de fevereiro de 2016 16:23
  • Bom dia, Segue abaixo a minha tabela CREATE TABLE [dbo].[LOG_ACESSO]( [CD_LOG_ACESSO] [numeric](20, 0) IDENTITY(1,1) NOT NULL, [NU_CREDENCIAL] [numeric](20, 0) NULL, [TP_AUTENTICACAO] [numeric](1, 0) NULL, [NU_MATRICULA] [numeric](18, 0) NULL, [NM_PESSOA] [varchar](150) NULL, [CD_VISITANTE] [numeric](10, 0) NULL, [CD_GRUPO_PESSOA] [numeric](4, 0) NULL, [CD_ESTRUTURA] [numeric](10, 0) NULL, [NM_ESTRUTURA] [varchar](100) NULL, [CD_GRUPO] [numeric](5, 0) NULL, [DS_GRUPO] [varchar](30) NULL, [CD_AREA_ORIGEM] [numeric](4, 0) NULL, [DS_AREA_ORIGEM] [varchar](30) NULL, [CD_AREA_DESTINO] [numeric](4, 0) NULL, [DS_AREA_DESTINO] [varchar](30) NULL, [CD_EQUIPAMENTO] [numeric](6, 0) NULL, [DS_EQUIPAMENTO] [varchar](50) NULL, [NU_EQUIPAMENTO] [numeric](5, 0) NULL, [NU_FUNCAO] [numeric](2, 0) NOT NULL, [TP_EVENTO] [numeric](3, 0) NULL, [TP_SENTIDO_CONSULTA] [numeric](1, 0) NULL, [DT_REQUISICAO] [datetime] NOT NULL, [NU_DATA_REQUISICAO] [numeric](8, 0) NOT NULL, [NU_HORA_REQUISICAO] [numeric](4, 0) NOT NULL, [DT_PERSISTENCIA] [datetime] NOT NULL, [CD_TIPO_CREDENCIAL] [numeric](3, 0) NULL, [NU_PIS] [varchar](25) NULL, [TX_CAMPO01] [varchar](50) NULL, [TX_CAMPO02] [varchar](50) NULL, [TX_CAMPO03] [varchar](50) NULL, [TX_CAMPO04] [varchar](50) NULL, [TX_CAMPO05] [varchar](50) NULL, [TX_CAMPO06] [varchar](50) NULL, [TX_CAMPO07] [varchar](50) NULL, [TX_CAMPO08] [varchar](50) NULL, [TX_CAMPO09] [varchar](50) NULL, [TX_CAMPO10] [varchar](50) NULL, [DS_NSR] [varchar](25) NULL, [DS_SITUACAO_MULTIPLA] [varchar](2000) NULL, [NU_MATRICULA_AUTORIZADOR] [numeric](18, 0) NULL, [NM_PESSOA_AUTORIZADOR] [varchar](150) NULL, CONSTRAINT [PK_LOG_ACESSO] PRIMARY KEY CLUSTERED ( [CD_LOG_ACESSO] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[LOG_ACESSO] WITH CHECK ADD CONSTRAINT [CK_LOG_ACESSO_TP_AUTENTICACAO] CHECK (([TP_AUTENTICACAO]=(3) OR [TP_AUTENTICACAO]=(2) OR [TP_AUTENTICACAO]=(1))) GO ALTER TABLE [dbo].[LOG_ACESSO] CHECK CONSTRAINT [CK_LOG_ACESSO_TP_AUTENTICACAO] GO ALTER TABLE [dbo].[LOG_ACESSO] WITH CHECK ADD CONSTRAINT [CK_LOG_ACESSO_TP_SENTIDO_CONS] CHECK (([TP_SENTIDO_CONSULTA]=(3) OR [TP_SENTIDO_CONSULTA]=(2) OR [TP_SENTIDO_CONSULTA]=(1))) GO ALTER TABLE [dbo].[LOG_ACESSO] CHECK CONSTRAINT [CK_LOG_ACESSO_TP_SENTIDO_CONS] GO
    quinta-feira, 3 de março de 2016 09:34
  • Obrigado pessoa pela ajuda irei implementar estas dicas para ver o resultado.
    quinta-feira, 3 de março de 2016 09:38