Como copiar os alarmes que estão sendo gravados em um Banco de Dados Access para o Oracle?
Solução:
Para isso, deve-se utilizar um objeto Consulta no Servidor de Dados para buscar os registros do Access e atualizar a tabela do Oracle periodicamente.
Portanto, deve-se criar um Histórico vinculado a uma tabela previamente criada no Oracle que tenha os mesmos campos do Histórico de alarmes, além de Tags Internos a serem associados a cada um desses campos, e um script no Servidor de Dados que seja executado em intervalos definidos.
Esse script deve fazer o seguinte:
- Buscar os registros da tabela do Access usando o método GetADORecordset da Consulta;
- Escrever na tabela do Oracle usando o método WriteRecord do Histórico;
- Guardar o TimeStamp do último registro em um tag do Servidor de Dados para que a próxima consulta seja feita a partir dele, de forma que os registros não sejam duplicados na tabela do Oracle.
No fim do script, deve-se usar um comando Save na Pasta de Dados para que o tag mantenha o valor mesmo quando o Domínio é parado.
É importante ressaltar que o filtro da consulta do script deve ser feito baseado no E3TimeStamp, e não no InTime, para que nenhum registro seja perdido.
Abaixo, pode-se ver um exemplo desse script:
Sub DataServer_OnMinuteChanging()
set query = Item(“QueryDB1”)
‘Sets the query date and time filter to return only new records
query.SetVariableValue “InitialDate”, Item(“LastTime”).Value
set rs = query.GetADORecordset()
if rs.RecordCount > 0 then
rs.MoveFirst
for aux = 1 to rs.RecordCount
‘Moves data from the query (DB1) to the tags linked to Historic (DB2)
Item(“TagsDB2”).Item(“E3TimeStamp”).Value = CDate(rs.Fields.Item(“E3TimeStamp”).Value)
Item(“TagsDB2”).Item(“InTime”).Value = CDate(rs.Fields.Item(“InTime”).Value)
Item(“TagsDB2”).Item(“Message”).Value = CStr(rs.Fields.Item(“Message”).Value)
Application.GetObject(“HistDB2”).WriteRecord()
‘Saves timestamp from the last record to use in the next execution
Item(“LastTime”).Value = CDate(rs.Fields.Item(“E3TimeStamp”).Value)
rs.MoveNext
next
end if
Save()
End Sub
Bom dia, como faço para espelhar as variáveis do Oracle para sql.