Bom Dia
uso Aqui o Sql server 2008 r2, para armazenar dados dos alarmes e outros historicos. gostaria de saber como faço para que ao receber um alarme, ele delete o anterior, ou seja so fique um registro no banco de dados
Bom Dia
uso Aqui o Sql server 2008 r2, para armazenar dados dos alarmes e outros historicos. gostaria de saber como faço para que ao receber um alarme, ele delete o anterior, ou seja so fique um registro no banco de dados
Bom dia @ronaldesantos,
Uma solução possível é executar uma consulta que deleta os registros que possuem o E3TimeStamp menor que o do ultimo alarme. Exemplo:
Consulta:
DELETE FROM Alarms
WHERE E3TimeStamp < (SELECT TOP 1 E3TimeStamp FROM Alarms ORDER BY E3TimeStamp DESC)
Para definir qual o melhor evento para executar essa consulta, preciso de umas informações:
Mais qual é a intensão de deixar apenas o ultimo alarme no banco?
Não há hipóteses de consultar os alarmes anteriores, para apurar um cenário?
Lembrando que um alarme pode ter até 3 registros, (quando ocorrido + quando reconhecido + quando normalizado), a ordem desses acontecimentos podem não está sempre em uma mesma sequência. Então qual deles registros devem permanecer no banco? Seria qualquer um deles desde que seja o ultimo?
Bom Dia O problema e que eu excluiria os dados da tabela conforme mudasse o valor de uma tag. so que eu tenho varias tabelas que sao criados conforme uma bilbioteca e na hora de criar a consulta ele nao acha o caminho da tabela conforme nome que esta configurada na biblioteca
Nesse caso você esta misturando duas linguagens (VBS com SQL), por isso não dá certo.
Para coletar o nome da tabela que irá usar o DELETE, você pode fazer em um script que monta o SQL da consulta, como o abaixo:
Obrigado Gabriel
Fiz da Seguinte forma
Table = TableName
Set Consulta = xo_Historicos_Hidraulico.Item("Dados").Item("Consulta1")
Consulta.SQL = "DELETE FROM " &Table
Consulta.Execute(True)
xo_Historicos_Hidraulico.Item(“Hist_Hidraulico_Celular”).WriteRecord()
funcionou perfeitamente