RESUMO
Ao utilizar o componente E3DataAccess em linguagens sem tipos (typeless), como o VBScript ou o Javascript, as chamadas do método GetValue retornam erro de tipos incompatíveis (type mismatch). O problema acontece porque em linguagens sem tipos, os parâmetros IN/OUT devem ser do tipo VARIANT. Já no VBA, por exemplo, onde as variáveis possuem tipos definidos, este problema não acontece.
COMO REPRODUZIR O PROBLEMA
Para simplificar, foi utilizado o próprio Elipse E3 para reproduzir o problema:
Set da = CreateObject("E3DataAccess.E3DataAccessManager.1")
Dim r, a, b, c
r = da.GetValue("Dados.Tag.Value", a, b, c)
MsgBox r
Uma mensagem de erro será exibida: ‘Type mismatch: ‘da.GetValue”
WORKAROUND
- Utilize o controle em um ambiente VBA.
- Atualize o E3 ou o controle para uma versão 4.5 ou superior.
SITUAÇÃO
A Elipse Software confirmou que esta limitação existe desde que o componente (E3DataAccess) foi criado. O artigo Conectando uma página HTML a um E3Server com a biblioteca de comunicação E3DataAccess utilizando JavaScript e VBScript contém a correção para versões 4.5 ou superiores.
Nas versões 4.5 ou superiores, foram adicionados dois novos métodos: ReadValue e WriteValue. Eles substituem GetValue e o SetValue, que consequentemente devem ser evitados.
ESTE ARTIGO APLICA-SE AOS SEGUINTES PRODUTOS
Versões do componente E3DataAccess inferiores à versão 4.5.