RESOLVIDO - Dúvida sobre validação de variável após update

Bom dia a todos!

Estou aprendendo a utilizar o Scriptcase e estou com uma dúvida simples…

Tenho um formulário com metas mensais onde o usuário preenche o valor realizado no mês. Após o update no campo (OnAfterUpdate), se o campo COD_DESEMPENHO for igual a 1 (Maior melhor) o programa irá comparar o valor informado com a meta. Se o valor digitado for maior do que a meta, ótimo. Se não ele deverá aparecer um alerta.

A mesma comparação irá existir se caso o COD_DESEMPENHO for igual a 2 (Menor Melhor), neste caso se o valor digitado for menor que a meta, ótimo. Se não deverá aparecer outro alerta.

Fiz o código abaixo e ele não está retornando valores…

[code]sc_lookup(meta, “select vlr_meta, cod_desempenho from bsc_indicador where cod_indicador = '{cod_indicador} '”);

if ({meta} === false)
{
echo "Erro de acesso. Mensagem = " . {meta_erro};
}
elseif (empty({meta}))
{
echo "Comando select não retornou dados ";
}

else
{
{vlr_meta} = {meta[0][0]};
{cod_desempenho} = {meta[0][1]};
if ({cod_desempenho} = “1” && {vlr_realizado} < $vlr_meta){
sc_alert (“Valor da meta do indicador não foi atingido. Deverá ser preenchido o FCA.”);
}
elseif ({cod_desempenho} = “2” && {vlr_realizado} >= $vlr_meta){
sc_alert (“Valor realizado é superior ao valor da meta. Deverá ser preenchido o FCA.”);
}
}[/code]

Bom dia amigo,
'{cod_indicador} ’ está com um espaço depois das chaves.

Se esse campo for um inteiro, pode tirar as aspas.

Obrigado pelo retorno inosys

Removi as aspas mas o teste lógico continua parando no echo "Comando select não retornou dados ";

tente:

$_sql=“select vlr_meta, cod_desempenho from bsc_indicador where cod_indicador = ‘{{cod_indicador}}’”;

sc_lookup(meta, $_sql);

coloque em modo debug e analise o query executada e rode diretamente no banco, se não retornar registros é porque a condição não permite retornar mesmo dados.

Obrigado pelo retorno Haroldo!
Fiz a alteração mas mesmo assim estava dando erro no select. Como a variável COD_INDICADOR é uma variável de sessão eu fiz a alteração abaixo e melhorou o resultado:

[code]sc_lookup(meta, “select vlr_meta, cod_desempenho from bsc_indicador where cod_indicador = [cod_indicador]”);

if ({meta} === false)
{
echo "Erro de acesso. Mensagem = " . {meta_erro};
}
elseif (empty({meta}))
{
echo "Comando select não retornou dados ";
}

else
{
{vlr_meta} = {meta[0][0]};
{cod_desempenho} = {meta[0][1]};
if ({cod_desempenho} = ‘1’ && {vlr_realizado} < $vlr_meta){
sc_alert (“Valor da meta do indicador não foi atingido. Deverá ser preenchido o FCA.”);
}
elseif ({cod_desempenho} = ‘2’ && {vlr_realizado} >= $vlr_meta){
sc_alert (“Valor realizado é superior ao valor da meta. Deverá ser preenchido o FCA.”);
}
else{
echo “Valor atualizado com sucesso”;
}
}[/code]

Porém agora ele consegue identificar que eu digitei um valor maior ou menor do que a meta do indicador, mas ele só deveria aparecer a mensagem em um dos casos de acordo com o cod_desempenho.

A regra seria:
Se o cod_desempenho for 1 e o valor digitado for menor do que a meta, apresenta a mensagem. caso contrário não.
Se o cod_desempenho for 2 e o valor digitado for maior do que a meta, apresenta a mensagem. caso contrário não.

Coloca em modo debug.

Consegui resolver com o código abaixo!

[code]sc_lookup(meta, “select vlr_meta, cod_desempenho from bsc_indicador where cod_indicador = [cod_indicador]”);

if ({meta} === false)
{
echo "Erro de acesso. Mensagem = " . {meta_erro};
}
elseif (empty({meta}))
{
echo "Comando select não retornou dados ";
}

else
{
{vlr_meta} = {meta[0][0]};
{cod_desempenho} = {meta[0][1]};
if (({cod_desempenho} == ‘1’) AND ({vlr_realizado} < $vlr_meta)){
sc_alert (“Valor da meta do indicador não foi atingido. Deverá ser preenchido o FCA.”);
}
elseif (({cod_desempenho} == ‘2’) AND ({vlr_realizado} >= $vlr_meta)){
sc_alert (“Valor realizado é superior ao valor da meta. Deverá ser preenchido o FCA.”);
}
else {
echo “Valor atualizado com sucesso”;
}
}[/code]

Obrigado a todos