Problema com VBscript


(Samuel Sousa) #1

Estou com um problema na hora de executar meu script

Quando tento pegar a referencia de um objeto de dados atraves de GetObject na forma abaixo :
image

Tenho o seguinte erro :
image

No entanto, se eu passasse o nome diretamente para a função, o script roda sem problemas, exemplo:
image

O que pode ser?


(Marco Silva) #2

Oi @samuel.sousa, bom dia!

Provavelmente, a propriedade “tagVariable” ainda não está com o objeto desejado no “OnStartRunning”, por isso do erro.

Para confirmar, pode utilizar uma caixa de mensagem (MsgBox) na linha abaixo do “scadaSourceRef”.

Uma sugestão seria fazer o evento após a propriedade receber o objeto, no “change” dela.

Mas recomendo também, a verificar se este script realmente é necessário, muitas vezes conseguimos resolver expressões e lógicas através de associações.

Qualquer dúvida estou à disposição.

Atenciosamente,
Marco Antonio


(João Vítor) #3

Bom dia, Samuel, tudo bom?

Na linha:
scadaSourceRef = “ALSPA_D.[” + tagVariable.Name + “].ScadaSource”

Ao invés de tagVariable.Name, você chegou a tentar tagVariable.Value? Imagino que o nome do objeto que você está tentando pegar na última linha esteja armazenado no valor do tag, e não seja o nome do tag em si.


(Marco Silva) #4

Boa observação @Johen !

@samuel.sousa, acredito que a informação do Johen é super pertinente. Veja primeiro o ponto levantado por ele (Na linha: scadaSourceRef = “ALSPA_D.[” + tagVariable.Name + “]"), e caso continue com problemas, veja as minhas observações.

Qualquer dúvida estamos à disposição.

Atenciosamente,
Marco Antonio


(Samuel Sousa) #5

@marco Eu ja utilizei o MsgBox logo abaixo do scadaSourceRef e o reusltado foi exatamente o que eu esperava, o problema é que essa string (scadaSourceRef) parece não ser aceita pelo método GetObject. E outra, esse script é necessário pois tenho cerca de ~100 mil tags, fazer as associações na mão é um trabalho inviável.
@Johen tentei acessar pelo tagVariable.Value mas nada ocorre, o valor retornado é vazio.
Perdão pela demora!


(Marco Silva) #6

Bom dia @samuel.sousa!

Obrigado pelas informações, no seu caso, se a tela já puder ser montada antes, é possível utilizar o evento de script CustomConfig da biblioteca de objetos do E3 para varrer em “tempo de Studio” os itens desejados e deixar os links já criados, sem a necessidade de fazer manualmente.

Para isso recomendo a leitura dos artigos:

INFORMAÇÃO: Lembre-se que a criação de link/associação de um objeto deve ser feito utilizando o PathName do objeto e a propriedade desejada, caso necessário.

Para mais detalhes recomendo a leitura do artigo:
KB-31793: Criando associações via script.

Caso queira, pode me enviar sua aplicação, e mais detalhes no e-mail marco@elipse.com.br, assim posso ver o que está fazendo e passar uma solução mais “correta”.

Qualquer dúvida estou à disposição.

Atenciosamente,
Marco Antonio


(Samuel Sousa) #7

Grato @marco pela resposta, entrarei em contato com minha equipe e vejo se é possível esse envio da aplicação.

Tenho mais uma dúvida, existe algum método que possa verificar a existencia de um objeto ? Por exemplo, eu sei que os metodos GetChildObject e Item, no entanto se o objeto não existe, elas me causam um erro e eu gostaria que retornasse Nothing, dessa forma eu posso continuar com a execução do meu script


(Marco Silva) #8

Oi @samuel.sousa,

Para verificar previamente a existência de um objeto antes de prosseguir o código, recomendo a leitura do seguinte artigo: Automação na geração de códigos: Lição 6 - Verificando a existência prévia de um objeto.

Qualquer dúvida me avise.

Atenciosamente,
Marco Antonio


(Marco Silva) #9

Bom dia @samuel.sousa

Conseguiu fazer seu script corretamente? Caso positivo, pode compartilhar a solução conosco?

Atenciosamente,
Marco Antonio