Gravar dados no SQL quando mudo o valor de uma tag

Boa tarde,
Criei um histórico para guardar uma informação no SQL onde quando inicio o processo ele deveria enviar os dados do processo e gravar inicio do processo quando Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 2
ou Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 4 e quando o processo termina Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 0
ele deveria mostrar fim do processo e guardar os dados do fim do processo. Estou tendo problemas com o WriteRecord


Sub Texto5_AHA()

'Adiciona o nome da Origem no Banco de Dados do SQL
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.PROC_BSY”).Value = 1 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Origem”).Value = “Recepcion 01”
End if

'Adiciona o nome do Destino no Banco de Dados do SQL
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 1 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-210”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 2 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-220”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 3 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-230”
end if

'Adiciona o nome do usuario logado no Banco de Dados do SQL
if Application.User = True then
Application.GetObject(“Dados.Usuario_Logado_1”).Value = Application.User
End if

'Adiciona o nome do Passo a ser executado no Banco de Dados do SQLif
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 2 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Inicio do Descaregamento”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 4 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Inicio do Descaregamento”
end if

if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 0 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Fim do Descaregamento”
end if

'Grava o Historico no Banco de Dados do SQL
if Application.GetObject(“MPROT_CIP.TRIGUER_REC01”).Value = 1 then
Application.GetObject(“HIST_REC1”).WriteRecord()
end if

'Application.GetObject(“MPROT_CIP.TRIGUER_REC01”).WriteEx = 1
End Sub

Olá @Valcir,

É exibido algum erro ou somente não é inserido o registro?

Atenciosamente,
Lucas Angelo dos Santos

Lucas, somente não é inserido o registro, em alguns momentos ele registra e em alguns momentos não.
Outro problema que preciso resolver seria a filtragem por data e variável. Só consegui fazer por uma ou por outra a consulta do e3browser

Olá @Valcir,

Insira um msgbox no script, para verificar em qual momento o script está sendo executado e se a condição do evento está de acordo com o esperado.

Sobre o outro problema, é possível compartilhar o script que está sendo utilizado?

Atenciosamente,
Lucas Angelo dos Santos

Olá Lucas,
Eu criei um histórico de gravação e uma logica em uma tela que fica sempre aberta.
Essa logica grava os dados que preciso tanto numéricos como escritos.

Sub Texto5_AHA()

'Adiciona o nome da Origem no Banco de Dados do SQL
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.PROC_BSY”).Value = 1 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Origem”).Value = “Recepcion 01”
End if

'Adiciona o nome do Destino no Banco de Dados do SQL
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 1 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-210”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 2 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-220”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.CMD_SEL_PROC2”).Value = 3 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Destino”).Value = “TQ-230”
end if

'Adiciona o nome do usuario logado no Banco de Dados do SQL
if Application.User = True then
Application.GetObject(“Dados.Usuario_Logado_1”).Value = Application.User
End if

'Adiciona o nome do Passo a ser executado no Banco de Dados do SQLif
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 2 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Inicio do Descaregamento”
end if
if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 4 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Inicio do Descaregamento”
end if

if Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 0 then
Application.GetObject(“Dados.Relatorio_Preparacao.A100.Rec01_Fase”).Value = “Fim do Descaregamento”
end if

'Grava o Historico no Banco de Dados do SQL
Application.GetObject(“HIST_REC1”).WriteRecord()

End Sub

Necessito que quando essa tag MPROT_CIP.TRIGUER_REC01.Value for = 1 ele grave uma linha no SQL, Essa tag muda para 1 quando Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 2 or Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value = 4
no programa do CLP já esta funcionando isso, mas não há gravação em alguns momentos.
E quando essa tag for = a 0 Application.GetObject(“MPROT_CIP.A100.OPERACAO_RE01.FASE_ATIVA”).Value ele grave novamente como fim do processo.
Não esta funcionando a gravação do nome do usuário e nem o WriteRecord corretamente.

Quanto a segunda duvida, estou realizando uma consulta gerando um relatório pelo E3Bowser, onde necessito que seja feita uma consulta por data e hora juntos, e isso não esta funcionando.
Segue logica abaixo.
SELECT Historico_CIPD.E3TimeStamp,Historico_CIPD.FaseCIP,Historico_CIPD.NombreEquipo,Historico_CIPD.TipoCIP,Historico_CIPD.Temperatura,Historico_CIPD.Condutividad,Historico_CIPD.Pression,Historico_CIPD.Usuario
FROM Historico_CIPD
WHERE (( Historico_CIPD.E3TimeStamp >= #<%InitialDate%># AND Historico_CIPD.E3TimeStamp <= #<%FinalDate%># ) AND ( Historico_CIPD.NombreEquipo LIKE ‘<%variavel%>’ ))
ORDER BY Historico_CIPD.E3TimeStamp ASC

Olá @Valcir,

Para ter uma boa solução, vai ser preciso analisar a aplicação.
Poderia, por gentileza, encaminhar a aplicação para : santos@elipse.com.br.

Atenciosamente,
Lucas Angelo dos Santos