NÃO CONSIGO RESOLVER - RESOLVIDO

(Ricardo Xavier) #1

Pessoal, estou com um problema e não sei se o mesmo está acontecendo com vcs. Criei dois Métodos PHP (funcionando corretamente, pois no before insert quando chamo os métodos funciona perfeitamente). Criei um Evento Ajax no onChange e chamo os métodos só que não funciona. Como é que resolvo isso PELO AMOR DE DEUS. Não sei se é cabeçada minha ou se é coisa do SC5.

(Haroldo) #2

Seria bom, que especificasse no título do tópico o problema.

Primeiro, teríamos que avaliar o conteúdo desses métodos.

(Diogo Toscano) #3

[2]

(Ricardo Xavier) #4

Ok, vamos lá.

Método 1
CalculaAdquirir
{ESTOQUEAADQUIRIR}= {ESTOQUERECOMENDADO} - {ESTOQUEATUAL};

Método 2
CalculaRecomendado
sc_lookup(dataset, “select sum((comunidadebancosemente.qtdprodutor)*comunidadebancosemente.indicecultura) from comunidadebancosemente
inner join escritorioemater on escritorioemater.idescritorioemater = comunidadebancosemente.idescritorioemater
where escritorioemater.idregionalemater = ‘{idregionalemater}’”);

{ESTOQUERECOMENDADO} = {dataset}[0][0];

e lá no OnChange do Evento_Ajax do campo EstoqueAtual chamei desse jeito:
CalculaRecomendado();
CalculaAdquirir();

Não seria para acontecer os cálculos que estão nos métodos? Lembrando que os campos {ESTOQUERECOMENDADO} e {ESTOQUEAADQUIRIR} são campos da própria tabela.

Acho que ficou mais claro agora.

(Haroldo) #5

e {EstoqueAtual}?
em qual campo aplicou OnChange Ajax?
Você checa o resultset da query select?
Rodou em modo DEBUG?

Você disse que funciona depois de AFTERINSERT, quer dizer que o registro ainda não era válido, não tinha dados buferizados?

(Cleyton Euler) #6

Aqui tem um erro de notação no SC:

Errado:
{ESTOQUERECOMENDADO} = {dataset}[0][0];

Correto:
{ESTOQUERECOMENDADO} = {dataset[0][0]};

Não entendi pq vc fez dois métodos. Eu faria tudo na janela de código do evento ajax.
Supondo que todos estes campos estejam na aplicação:

sc_lookup(dataset, “select sum((comunidadebancosemente.qtdprodutor)*comunidadebancosemente.indicecultura) from comunidadebancosemente
inner join escritorioemater on escritorioemater.idescritorioemater = comunidadebancosemente.idescritorioemater
where escritorioemater.idregionalemater = ‘{idregionalemater}’”);

{ESTOQUERECOMENDADO} = {dataset[0][0]};
{ESTOQUEAADQUIRIR} = {ESTOQUERECOMENDADO} - {ESTOQUEATUAL};

(Cleyton Euler) #7

Simulei o cenário com um controle:

Campos
ESTOQUERECOMENDADO (número)
ESTOQUEATUAL (número)
ESTOQUEAADQUIRIR (número)
EVENTO (select) manual Sim = 1; Não = 2

Coloquei o código abaixo no evento ajax onChange do campo EVENTO:
{ESTOQUEAADQUIRIR} = {ESTOQUERECOMENDADO} - {ESTOQUEATUAL};

Rodando a aplicação, 100 no campo ESTOQUERECOMENDADO e 50 no campo ESTOQUEATUAL, quando mudo o valor do campo EVENTO o cálculo e executado perfeitamente.

como o Harold comentou, teste seu dataset para ter certeza que ele esteja retornando valor válido.

(Ricardo Xavier) #8

Pessoal, consegui identificar, o Dataset não está retornando nada, mais no banco ele executa normalmente. E agora? Algum macete? Só queria avisar que sou novatíssimo nesta ferramente, por isso estou apanhando tanto.

(Haroldo) #9

Coloque em modo debug e verifique as querys.

(Cleyton Euler) #10

Se no banco está rodando, talvez o problema seja no parâmetro que vc coloca na where. Vc está usando um campo: {idregionalemater}. Este campo tem um valor válido?

Teste a query com um valor fixo válido, 1 por exemplo, supondo que exista no banco um registro com esse ID.

sc_lookup(dataset, “select sum((comunidadebancosemente.qtdprodutor)*comunidadebancosemente.indicecultura) from comunidadebancosemente
inner join escritorioemater on escritorioemater.idescritorioemater = comunidadebancosemente.idescritorioemater
where escritorioemater.idregionalemater = ‘1’”);