SC9.4 Formulario Unico Variavel campo Where

Aplicação de formulário Único não está lendo variavel do tipo global no campo Where da SQL, gerando erro de sql.

Ex: chave = [var_global]

O erro acontece apenas em ambiente de produção.
Formulários antigos que funcionavam antes já publicados passaram a apresentar o problema após a atualização de um único formulário.

Já atualizei o prod na produção para ficar compativel com o ambiente de producao (versao 9.4.10) mas problema continua.

A variável global em questão é uma valor inteiro (INT), chave da tabela usada pelo formulário.

Se colocado na clausula Where o valor inteiro ao inves da variavel global, a sql e o formulario funcionam.

Ex: chave = 123

Em tempo:

O mesmo problema ocorre utilizando uma variavel sendo passada como parametro atraves da sc_redir emitida em outra aplicacao.

aplicacao 1: sc_redir(formulario, p_chave=123)

formulario: sql: clausula where chave = [p_chave]

Cesar Allevato

Amigo coloca imagens e códigos, e também mostre como está a saída e entrada deste campo em variáveis globais…

Prezado Joelton,
Em complemento ao meu email sobre possivel BUG entitulado:
SC9.4 Formulario Unico Variavel campo Where

Vou tentar passar o máximo de informações e fotos possiveis.

Descrição geral do ambiente e do possivel BUG:

Trata-se de apenas 4 aplicacoes bem simples:

  • formulario para entrada de login
  • menu arvore
  • formulario para atualizacao de dados pessoais
  • formulario para alteracao de enderecos.

Uma vez efetuado o login correto, este formulario de login que recebe um campo matricula acessa uma tabela
utilizando esse campo matricula para obter o valor correspondente da chave principal das tabelas a serem
usadas nos outros 2 formularios (dados pessoais e enderecos). A chave é sede_id.

Em seguida na opcao onvalidate desse formulario, é criada e gravada a variavel [glo_socio_id] com o valor
da chave socio_id.

Continuando, o formulario passa o controle via ligacao para a aplicacao de menu_arvore passando ainda o parametro
matricula_socio para o menu_arvore que a utiliza co o nome de [glo_matricula] para exibir no cabecalho da aplicacao menu.

A aplicacao menu no evento on_execute obtem o valor da chave socio_id atraves do comando $socio_id=$_SESSION[‘glo_socio_id’];

No menu, ao ser selecionado a opcao de atualizacao de endereco e contatos, será chamada no evento onexecute do menu a aplicacao
formulario de atualizacao de enderecos, atraves da macro sc_redir, sendo passado o parametro p_socio_id=$socio_id.

Na aplicação de formulario de atualizacao de endereco, na sessao SQL -> no campo where consta socio_id=[p_socio_id].

Assim, o formulario de atualizacao de endereco consegue concluir o sql e exibir os valores dos campos do endereco para atualizacao.

Todos esses passos ocorrem de maneira correta no ambiente de desenvolvimento. Entretanto, quando colocado em produção, este ultimo passo
acusa erro pois a variavel [p_socio_id] não é capturada e o sql do formulario de atualizacao de endereco fica incorreto.

Observacoes importantes:

  1. Com certeza a variavel [glo_socio_id] criada pelo formulario de login foi lida corretamente pelo menu_arvore pois fiz um teste (desenvolvimento e
    producao) para exibir o valor dessa variavel no evento onload do menu com o comando echo e tambem exibindo esse valor colocando [glo_socio_id] no
    cabecalho do menu_arvore;

  2. Já fiz o teste substituindo no campo where do formulario a variavel passada pelo sc_redir do menu: socio_id=[p_socio_id] … pela variavel
    global: socio_id=[glo_socio_id] … continua funcionando no ambiente de desenvolvimento mas continua dando o mesmo erro em producao, ou seja,
    o formulario não está conseguindo ler nem a [glo_socio_id] nem a [p_socio_id];

  3. Essas aplicacoes funcionam desde a versao SC6, sendo migradas para a 9.3 acho que em meados de marco de 2019 e estavam funcionando perfeitamente
    até ontem, quando precisei fazer uma simples alteracao do nome de label de um dos campos do formulario de atualizacao de endereco, ja no ambiente
    SC9.4.10, e testada nesse ambiente de desenvolvimeto OK, mas ao publicar esta aplicacão, a mesma passou a acusar o referido erro em produção.

IMPORTANTE: Embora não tenha efetuado nenhuma alteracao no outro formulario (atualizacao de dados pessoais), nem tão pouco republicado esse
formulario, o mesmo passou a apresentar o mesmo erro que o formulario de enderecos que foi atualizado (Erro no where da sql … identico).

Já instalei o prod da SC9.4.10 no ambiente producao mas o erro continua.

///////////////////

Seguem 14 fotos imagens com as telas ambiente de desenvolvimento e do ambiente de produção (estas com o erro exibido) e outras
fotos com codigos de eventos das aplicacoes e a tela de variaveis globais do formulario de atualizacao de enderecos.

Estao em ordem … foto1 ate foto15 (esta é a do erro em producao).

Necessitando de mais alguma informação pode pedir.

Obrigado pela atenção.

foto1_form_login_ambiente_desenvolvimento

foto13_form_login_ambiente_producao

Pessoal, depois de muitos testes descobri o seguinte:

  • o erro só acontece em produção.

  • embora eu tenha feito uma simples alteração no label de um campo de um dos formularios, o erro está sendo causado pela aplicação de menu, e no caso especifico do menu árvore.

  • a aplicacao de menu está “apagando” as variaveis globais existentes.

  • troquei o tipo de menu para menu (normal) (em barra horizontal) e o erro sumiu como que por encanto.

  • fiz um teste de retornar o menu para menu-arvore e o erro voltou a ocorrer.

CONCLUSÃO: Existe algum problema na aplicação menu do tipo menu-arvore que está deletando as variaveis globais já existentes.

Boa noite.

Alenxandre, o menu arvore não possui nenhum código de reset de variáveis?

Não, o menu-arvores não possui nenhum código meu para reset de variaves.

Basta simplesmente trocar o tipo de menu para normal (aquele de barras horizontais) para tudo voltar a funcionar sem desaparecer nenhuma variavel de sessao.

Se eu retornar a aplicacao para menu-arvore e repiblicar, os erroas voltam a aparecer.

Já fiz inclusive uma nova aplicacao (no ambiente SC9.4.10 do tipo menu (barra horizontal), piubliquei e funcionou. Ao transformar essa nova aplicacao em menu_arvore e republicar os erros voltam a ocorrer.
Cesar