Boa tarde,
Para as instâncias AnaDados_XXX gostaria de salvar os valores que estão nas propriedades Prop1 e Prop2. Há alguma maneira de pega-los via script?
Boa tarde,
Para as instâncias AnaDados_XXX gostaria de salvar os valores que estão nas propriedades Prop1 e Prop2. Há alguma maneira de pega-los via script?
@Shay, boa tarde.
As propriedades das instâncias de XObjects podem ser ou associadas a objetos de tela (ou outros objetos) normalmente como se fossem tags ou via script pode-se retornar o valor como tags também.
Caso não seja isso, por favor, poderia detalhar?
Sds.
@Luiz,
O objetivo é exibir todas as analógicas cadastradas.
Preciso de algo que vai “varrer” todas as instâncias do tipo AnaDados, do servidor, e retornar uma lista
001_Ana001.Prop1 e Ana001.Prop2
002_Ana002.Prop1 e Ana002.Prop2
…
140_Ana140.Prop1 e Ana140.Prop2
Poderia associar estas propriedades a objetos de tela/ outros. Porém, ainda, não consegui ver uma forma de fazer isso sem que seja uma por uma.
Há algumas formas de “varrer” todas as instâncias do servidor e retornar uma lista. Só depende de como quer aplicá-lo. Aqui há 3 formas de fazer o que precisa:
Utilizando o For Each…Next e retornando os dados num MsgBox, por exemplo:
Sub CommandButton1_Click()
Dim folder
Set folder = Application.GetObject("EntidadesDados.Ana")
For each obj in folder
If TypeName(obj) = "NomeDaClasseDoXObjectXXX_AnaXXX" Then
MsgBox obj.Name & ": " & obj.Prop1
ElseIf TypeName(obj) = "NomeDaClasseDoXObjectAnaYYY" Then
MsgBox obj.Name & ": " & obj.Prop2
End If
Next
End Sub
Outra forma seria utilizando o CustomConfig, mas, neste caso, precisaria criar um XControl que gerasse um XObject na pasta indicada e já fosse associado à propriedade que irá exibir os valores da Prop1, por exemplo. Ou, ainda utilizando CustomConfig, associar objetos de tela com nomes sequenciais a instancias de XObject sequenciais também.
Para mais detalhes sobre o CustomConfig, ver estes artigos (aqui, aqui, aqui e aqui) e este video.
Também há um exemplo no tutorial E3 Avançado > Capítulo Adicionando Objetos em Tempo de Execução > Exercícios > CustomConfig.
Uma outra possibilidade é criar um ComboBox, por exemplo, que receba o nome de todas as instancias e, ao selecionar um nome, associar a propriedade do XObject temporariamente a um objeto display (ou setpoint). Ex.:
Sub ComboBox1_OnStartRunning()
' Script para adicionar o nome dos XObjects ao ComboBox
Clear()
Dim folder
Set folder = Application.GetObject("EntidadesDados.Ana")
For each obj in folder
AddItem obj.Name
Next
End Sub
Depois, ao selecionar, criar uma associação bidireicional:
Sub ComboBox1_Change()
On Error Resume Next
Dim Bind, Source, folder
Set folder = Application.GetObject("EntidadesDados.Ana")
For each obj in folder
If obj.Name = Value Then
If TypeName(obj) = "NomeDaClasseDoXObjectXXX_AnaXXX" Then
Source = obj.PathName&".Prop1"
MsgBox "Criando uma conexão em '" & Source & "'."
Screen.Item("Texto4").Links.CreateLink "Value", Source, 1
ElseIf TypeName(obj) = "NomeDaClasseDoXObjectAnaYYY" Then
Source = obj.PathName&".Prop2"
MsgBox "Criando uma conexão em '" & Source & "'."
Screen.Item("Texto4").Links.CreateLink "Value", Source, 1
End If
End If
Next
End Sub
Estes são alguns exemplos para tentar ajudar, mas ainda há outras formas de fazer.
Há alguns artigos que são mini tutoriais no Elipse Knowledgebase que poderão lhe auxiliar como:
Automação na geração de códigos
Usando bibliotecas no E3
Noções de VBScript no E3
Caso ainda não seja o que precisa, por favor, nos informe.
Sds.