As variáveis devem ser criadas separadamente em cada um dos Viewers quando as informações para cada objeto forem distintas entre si.
Exemplo: No horário de verão, o horário do servidor não é ajustado, enquanto que os demais computadores sim. Ao visualizar um tag demo do tipo CurrentTime que foi criado no servidor, o valor terá 1 hora de diferença dessa mesma variável criada no Viewer, pois o tag do Viewer exibirá o horário do micro conectado à aplicação.
Semáforo
Em algumas aplicações, é preciso inserir uma lógica para impedir que uma tela seja aberta por mais de um usuário simultaneamente.
Identificação do computador
O primeiro passo é identificar o nome do computador que está executando o Viewer. Como é possível que vários Viewers estejam conectados, cada um com um nome diferente, essa informação deve ser salva em uma variável no objeto Viewer. Para isto, siga estes passos:
- No objeto Viewer, crie um tag interno chamado NomeComputador.
- No evento OnStartRunning do tag NomeComputador, insira um script que busque o nome do computador.
Acesso à Tela Exclusiva
Ao chamar a tela exclusiva, é preciso verificar se ela já está sendo acessada, ou então se permite o acesso. Se o acesso à tela for permitido, devemos salvar em uma variável o nome do computador que possui a exclusividade da tela. Como essa variável é única, e é a mesma para todos conectados a aplicação, ela deve existir no servidor. Para isto, siga estes passos:
- No servidor de dados, crie um tag interno chamado AcessoTelaExclusiva.
- No botão que chamará a tela exclusiva, crie o seguinte script:
Sub CommandButton1_Click()
‘Acesso a tela exclusiva
‘Acesso negado
MsgBox “A tela já está aberta por outro usuario!”, “Aviso”, vbInformation
else
‘Passa o nome do computador para a tela exclusiva
Application.GetObject(“Dados.AcessoTelaExclusiva”).Value = Application.Item(“NomeComputador”).Value
‘Abre a tela
Application.DoModal “TelaExclusiva”, “”, 0, 0, , , 0, 1+2+64+2048
end if
End Sub
Liberação do acesso
Ao fechar a tela exclusiva, é preciso limpar a variável que armazena o nome do computador que estava conectado. Para isto, insira o seguinte script no evento OnStopRunning:
‘Libera o acesso para outro usuario
Application.GetObject(“Dados.AcessoTelaExclusiva”).Value = “”
End Sub
Exercícios
- Crie uma aplicação que implemente a lógica da tela exclusiva.