Excluir dados do 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

1 Like