Evento AJAX

Deu uma lida no forum não encontrei solução pra minha duvida!

$sql = “SELECT f_valor_mensalidade_curso FROM cad_aluno WHERE i_cod_aluno = '” .[var_aluno_valor]."’";

sc_lookup(valor2, $sql);

{valor_curso} = {valor2[0][0]};

quando uso esse script no metodo php e uso o ajax pra rodar ele em onchange com um campo do tipo select, ele traz o valor tipo da um pisca e depois zara de novo!

mas se eu colocar no evento onRefresh
ele traz o valor nomal, mas não formata com o timpo de campo moeda!
somente quando adiciono esse script

sc_format_num({valor_curso}, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘R$’);

mas ai ele não salva no banco pois a tabela esta como decimal, pois vou usar o valor pra fazer uma soma depois!

não sei se consegui explicar direito a minha duvida, mas alguem sabe me explicar pq o evento ajax não traz o valor somente traz rapido e apaga sozinho como se estive-se em branco o campo novamente!

Amigo, boa tarde!!

Você não está com a opção para dar um refresh na pagina sempre que alterar o campo?

fiz o teste se marcar a opção de recarregar a pagina após selecionar a opção ele traz o valor rapido como tinha dito, se não marcar a opção, não traz nenhum valor!

Qual o tipo de campo que vc está usando o evento ajax?

Campo do tipo select

Certo, está usando o evento onChange correto?

Veja se atribuindo um valor qualquer para o campo resolve.

Ex: {valor_curso} = 1;

se atribuir a uma valor ele traz! o que vc acha que pode ser?

Tenta trocar valor2 por rs. Ficaria assim:

$sql = "SELECT  f_valor_mensalidade_curso FROM cad_aluno  WHERE i_cod_aluno = '" .[var_aluno_valor]."'";
   
sc_lookup(rs, $sql);

{valor_curso} = {rs[0][0]};

Se não der certo, da um echo na variavel que monta o seu select e veja direto no banco se funciona a query.

Não retorna nenhum valor! mas eu seu que a query esta funcionando pq se eu pegar esse codigo que colocar no envento onrefresh e colocar o campo select para dar um refresh apos seleção ele traz o valor!

coloca a aplicação em modo debugue, analise a query executada no campo.

Se o i_cod_aluno for número usar assim:


$i_cod_aluno_x=[var_aluno_valor];

/* Macro sc_lookup */

$sql = "
SELECT
    f_valor_mensalidade_curso
FROM
    cad_aluno
WHERE
    i_cod_aluno = $i_cod_aluno_x
ORDER BY
    i_cod_aluno
";

sc_lookup(vlr, $sql);

{valor_curso}={vlr[0][0]};

if (empty({valor_curso})) {
    {valor_curso}=0;
}

Se char:


$i_cod_aluno_x=[var_aluno_valor];

/* Macro sc_lookup */

$sql = "
SELECT
    f_valor_mensalidade_curso
FROM
    cad_aluno
WHERE
    i_cod_aluno = '$i_cod_aluno_x'
ORDER BY
    i_cod_aluno
";

sc_lookup(vlr, $sql);

{valor_curso}={vlr[0][0]};

if (empty({valor_curso})) {
    {valor_curso}=0;
}

Não precisa usar o sc_format_num({valor_curso}, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘R$’);
por se tratar de uma app formulário ou controle o SC já formata em BR R$ o valor para mostrar na tela e internamente você pode usar ele para fazer
os cálculos desejados sem preocupações de formatação.

Jailton
eu usei do jeito que vc mandou, se eu usar no Ajax ele traz o valor 0,
mas se eu colocar o mesmo codigo no evento onrefresh ele traz o valor que esta no banco que é 300!

Coloque no modo debug como falou o Haroldo e veja o que ele está fazendo no momento da mudança no campo.

Colocou no Evento Ajax - OnBlur no código do Aluno assim que der TAB ele tem que pegar ele, se não coloca um echo neste evento e pega a sql


$i_cod_aluno_x=[var_aluno_valor];

/* Macro sc_lookup */

$sql = "
SELECT
    f_valor_mensalidade_curso
FROM
    cad_aluno
WHERE
    i_cod_aluno = '$i_cod_aluno_x'
ORDER BY
    i_cod_aluno
";

// Para ver o que esta realmente acontecendo na SQL
echo 'SQL = '.$sql."<BR>";

coloquei em modo debug e o erro é que aparentemente o campo select (onde seleciona o nome do aluno) não esta gravando o código do aluno na variavel!
o SQL esta trazendo vazio!

[table]
[tr]
[td][/td][/tr][/table]1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY i_cod_aluno' at line 7 ADOConnection._Execute( SELECT f_valor_mensalidade_curso FROM cad_aluno WHERE i_cod_aluno = ORDER BY i_cod_aluno , false) % line 1085, file: adodb.inc.php ADOConnection.Execute( SELECT f_valor_mensalidade_curso FROM cad_aluno WHERE i_cod_aluno = ORDER BY i_cod_aluno ) % line 5142, file: form_tbl_faturamento_1_apl.php form_tbl_faturamento_1_apl.valores() % line 5102, file: form_tbl_faturamento_1_apl.php form_tbl_faturamento_1_apl.teste_onChange() % line 1291, file: form_tbl_faturamento_1_apl.php form_tbl_faturamento_1_apl.controle() % line 2054, file: index.php

Só uma dúvida, porque vc quer atribuir o codigo do aluno em uma variável global? Não seria mais fácil vc fazer assim?

$sql = "SELECT  f_valor_mensalidade_curso FROM cad_aluno  WHERE i_cod_aluno = '" .{cod_aluno}."'";
   
sc_lookup(valor2, $sql);

{valor_curso} = {valor2[0][0]};

Thyago, é tanta coisa que não tinha pensado nisso. Mas aparentemente deu certo, vou tentar terminar tudo e ver se vai dar tudo certo!

Obrigado a todos que me ajudaram ai!