Boas
tenho uma situação de Ajax events onde tenho de ir buscar dados para atruir dentro da ficha que estou a alterar ou inserir, utilizando para isso o evento onChange de um campo tipo integer.
Nesta aplicação tenho vários grupos definidos (Administrador, Diretores, Vendedores.) Até há bem pouco tempo só o Administrador é que poderia utilizar essa opção de ir buscar os dados a outra tabela (ver código no final). Mas recentemente foi-me pedido pelo gestor do projeto para atribuir essa opção aos grupos dos Diretores e Vendedores.
Mas acontece que nestes grupos (Diretores e Vendedores) a rotina onChange de forma nenhuma atribuia os dados lidos da tabela a ficha que estava a trabalhar aos respetivos campos.
Andei nisto uma semana, consultei o Forum e deparei-me com situaçãoes de anomalias no onChange divulgadas, enfim mas nada que eu adaptasse a minha rotina funcionava como Vendedor ou Diretor.
Então numa tentativa desesperada resolvi no inicio do evento onChange atribuir a variavel global [xgrupo] que identifica o grupo do utilizador atual, mudar o seu valor para [xgrupo]=“Administrador” e no final da rotina onChange voltar a colocar o valor anterior [xgrupo]=“Vendedores” ou [xgrupo]=“Diretores”.
EUREKA!.. FUNCIONOU…
AGORA PORQUÊ ESTA SITUAÇÃO?
O código é o seguinte já com a alteração referida:
[b]// tem de ser com o grup admnistrador, caso contrario não le os dados para dentro da ficha
$grupoatual=[xgrupo];
[xgrupo]= "Administrador";[/b]
sc_lookup(xc,“SELECT numero,tipoimovel,proprietario,refbanco,tipologia2,distrito,concelho,freguesia,preco,tiponegocio,vendedor,director FROM imoveis WHERE numero = ‘{crmimovel}’”);
if(!empty({xc}))
{
{tipoimovel} ={xc[0][1]};
{tipologia} ={xc[0][4]};
{banco} ={xc[0][2]};
{distrito} ={xc[0][5]};
{concelho} ={xc[0][6]};
{freguesia} ={xc[0][7]};
{pmaximo} ={xc[0][8]};
$xobjectivo ={xc[0][9]};
{objectivo} ={xc[0][9]};
if([xgrupo]=='Administrador')
{
{vendedor} ={xc[0][10]};
$wvendedor={xc[0][10]};
{director} ={xc[0][11]};
}
if($xobjectivo==“VENDA”)
{
{objectivo}=“COMPRA”;
}
}
else
{
echo ’ Imóvel, Não encontrado’;
}
sc_lookup(yc,“SELECT numero,nome,estado FROM vendedores WHERE nome = ‘$wvendedor’”);
if(!empty({yc})){
$ywestado ={yc[0][2]};
if ($ywestado!="ACTIVO"){
sc_alert("ATENÇÃO: O Vendedor deste IMÓVEL JÁ NÃO está ATIVO");
}
}
// Volta a atribuir o grupo atual
[xgrupo]= $grupoatual;