KB-27883: Copiando registros do Access para o Oracle.

Descrição:

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

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Comentários em “KB-27883: Copiando registros do Access para o Oracle.

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *