PDA

View Full Version : Variaveis externas



bobfalcoes
30-Aug-2019, 05:25 PM
Senhores, Boa Noite.

Criei um projeto Mobile, em um Select_Cliente.Wo tenho OnConstrain no DD do clinte e pego um valor de uma variável criada em um .PKG (gi_Id_Empresa).
Quando compilo e rodo o programa na maquina de desenvolvimento fica tudo ok, mas quando coloco na nuvem o valor desta variável é sempre zero, segue exemplo abaixo:
Marcado em vermelho está a variável que vem zerada, esta variável foi preenchida no login.wo, então ela tem um valor, só vem zerada na nuvem, em desenvolvimento ela contém um valor.

Alguém poderia me ajudar??

Grato
Walter

Procedure OnConstrain
Integer iCod_Empresa
String sVolta

Move giIdEmpresa to iCod_Empresa
Send Clear of oEmp_Conf_DD
Move iCod_Empresa to Emp_Conf.Cod_Empresa
Send Find of oEmp_Conf_DD EQ 1
If ((Found) and (Emp_Conf.Cod_Empresa = iCod_Empresa)) Begin
Move iCod_Empresa to sVolta
Move (Append(sVolta, ' giID--> ')) to sVolta
Move (Append(sVolta, giIdEmpresa)) to sVolta
Move (Append(sVolta, ' Dentro IF')) to sVolta

Send ShowInfoBox Emp_Conf.NOME sVolta
End

Forward Send OnConstrain
//Constrain Cliente.Cod_Empresa eq iCod_Empresa // giIdEmpresa // // giIdEmpresa
End_Procedure

Samuel Pizarro
30-Aug-2019, 08:16 PM
Inumeras discussoes sobre isso!

vc nao pode confiar em variaveis normais (globais ou locais) num programa web. Pra isso existem as variaveis web. WebProperties.

Tudo funciona qdo vc compila e roda em modo debug, pq qdo vc roda em debug, o seu programa nao roda no modo "Process Pooling" . Entao todo request que chega pra seu web-server, é atendido por um unico processo web que esta rodando sua aplicacao.

Fora do studio/debug, seu sistema web roda em modo "pooling", onde varios .exe sao iniciados em background, e cada request que chega no seu web-server, é atendido por um processo (.exe) diferente,
Hora, as variavel que vc setou, existe no processo que atendeu o request anterior..

Qdo chega na hora de carregar seu constraint, isso eh um outro request , e um outro .exe na fila ira atender essa solicitacao.. e esse .exe nunca executou a rotina que seta sua variavel , por isso que sua variavel esta zerada.

Leia com carinho o help sobre Process Pooling e web-properties.

[]s

Samuel

Queiroz
31-Aug-2019, 07:03 AM
Só complementando, aqui voce acha um pequeno treinamento sobre isto que o Samuel falou:

https://learning.dataaccess.com/courses/working-with-web-properties/

Queiroz