Conflito entre Abas

Olá Boa Tarde, por incrível que pareça somente agora migrei meu sistema do SC7 para o SC9 habilitei e estou utilizando o menu com Abas, acontece que meus usuários estão reclamando de bugs.

Já percebi que os usuário utilizam muitas abas abertas, e isso dando conflitos de dados. vou dar um exemplo

tabela de pedido tenho um campo status
tabela de orçamento tenho um campo status
tabela de ordem de serviço tem um campo status

Se atualizo o status de um pedido em uma aba, depois atualizo o status de um orçamento por exemplo o status do pedido entra no orçamento, ou por muitas vezes o numero do orçamento atualizado eh o numero do pedido que eu estava atualizando antes.

Parece meio doido mais acredito que seja por utilizar os mesmos nomes de variáveis globais.

Alguém já passou por algo parecido, estou pensando seriamente em retirar as abas pois não tenho como reprogramar o sistema todo.

Tem que usar glo_ antes dos nomes das globais.

Redefina esta variável global para saída, em cada formulário, e coloque glo_ antes do nome dela.

No campo OnLoad coloque:
[glo_Status]={Status};

Isso vai fazer elas ficarem restritas aos formulários, e poderá continuar com as abas normalmente.

glob_ é um prefixo que você toma como padrão.
Ou tem algo a ver com o framework do scriptcase?

Eu e outros adotamos como padrão, porque no Scriptcase se você fizer assim para ele é a mesma
variável:
{Nome}; // Variável de Campo do Scriptcase
$Nome; // Variável Local para eventos
[Nome]; // Variável Global

Ai o jeito correto seria assim para ele não misturar as variáveis:
{Nome}; // Variável de Campo do Scriptcase
$_Nome; // Variável Local para eventos
[glo_Nome]; // Variável Global

Com isso você tem certeza que ele não esta misturando as variáveis.

1 Curtida

Entendi é um padrão que foi criado por vocês.
Realmente pode haver mistura de variável.
Obrigado pelo retorno.

Mas no caso dele tem que se atentar também se tipo um exemplo as 3 abas, que estão
entrando em conflito são aplicações que esta recebendo a variável como entrada e não
registrando a variável no Evento OnLoad para passar para frente, ai nesse caso ele teria
que adicionar glo_Nome_App_variavel a variável para evitar de entrar em conflito com as
outras abas que também recebem ela.

Entendi. Coisas para ficar atento.

1 Curtida

Oi Jailton Obrigado pela resposta, não sabia dessa questão GLO as variáveis conflitantes estão com o nome [status]

creio que a situação se agrave pelo fato das telas serem montadas via SQL e serem as mesma

[tabela]
[filtro]
[status]
[campo1]
etc

O meu menu abre o mesmo formulário busca em tabelas dinamicamente, tenho uma tabela monta_tela e monta_menu.

Sim agora vai ter que revisar o código e alterar para não ficar a mesma variável o nome igual
em todos os locais.

1 Curtida

Obrigado pelas boas dicas sr Jailton

Eu uso essa padrão que o Jailton e adiciona mais uma opção ainda que é quando entro no formulário e vou utilizar a global em mais eventos dentro do app eu crio um atributo e movo essa variável global recebida para o atributo para essa valor ficar localmente e com isso não dar conflitos com outras globais que venham a ter o mesmo nome e são passada para outras app.

1 Curtida

Só para complementar a discussão. Eu já tive diversos problemas em ter conflitos com o nome de variáveis de campo com variáveis locais e globais. Por isso, acredito que esse padrão criado por vocês é bem interessante.

2 Curtidas

Porque reabrir tópicos antigos?

Boa tarde! Verdade, também tive diversos conflitos com isso e esse padrão ajudou demais! Parabéns!

1 Curtida