Campo DECIMAL

Bom dia! caros tenho um campo decimal que recebe o seguinte calculo em onchange em Formulario de multiplos registros

{med1un} = {av11un} + {av21un} + {av31un} + {av41un} + {av51un};
{totpto} = ({med1un} * 3) + ({med2un} * 3) + {med3un} * 4;

if ({med1un} > ‘10,0’)
{
sc_ajax_message (“A Média não pode ser maior que 10, verifique as notas informadas!”, “”, “width=450”, “timeout=10”);
}

Porem quando quando clico no botao de atualizar registro ele salva um valor no campo {totpto} totalmente diferente tipo

Ele calcula no formulário 26,1 e salva no banco 9,9

Já tentei varias formas e o erro persiste.

Alguém pode da um help…
Print da tela
http://maisinformatica.com.br/vira.jpg

if ({med1un} > ‘10,0’) <— isso não é certo. Represente separação decimal por ponto.

O código correto tem que ficar assim:
{med1un} = {av11un} + {av21un} + {av31un} + {av41un} + {av51un};
{totpto} = ({med1un} * 3) + ({med2un} * 3) + ({med3un} * 4);

if ({med1un} > 10) {
sc_ajax_message (“A Média não pode ser maior que 10, verifique as notas informadas!”, “”, “width=450”, “timeout=10”);
}

Faltou colocar o ( ) também no ultimo cálculo.

Precedência de Operadores:
https://secure.php.net/manual/pt_BR/language.operators.precedence.php

Fiz a alteração no código, porem me deparei coma seguinte situação.

Todos os registros que está com o calculo incorreto cliquei no botão de atualizar do formulário e o campo {totpto} recalcula normalmente, mas não atualiza no banco.

ou seja se o calculo correto era 10,9 e no banco tava 8,9 quando clico n o botão de atualizar ele permanece 8,9 no banco.

Para ele alterar no banco eu tenho que retirar o valor de um campo, colocar novamente o mesmo valor e clicar no botão atualizar.

Teria uma solução para quando clicar em atualizar ele atualizar também no banco sem a necessidade de ter que alterar o valor.

Sim cola a mesma rotina no Evento OnValidate:
{med1un} = {av11un} + {av21un} + {av31un} + {av41un} + {av51un};
{totpto} = ({med1un} * 3) + ({med2un} * 3) + ({med3un} * 4);

Funcionou 100% Brigadão pela força.

Redundar código não é boa prática. Coloque o código em um método e reutilize o método.

Então “colar a mesma rotina” vai deixar seu código carregado e poluído, não é um conselho que eu seguiria.

Os últimos parentes não afetam o resultado da expressão.

Em expressões matemáticas o php executa primeiro multiplicação e divisão e depois adições e subtrações, então a questão dos parenteses é apenas de semântica visual (neste caso).

Para que os tópicos tenham uma sequência de ajuda lógica, interromper um uma ajuda praticamente dando a mesma resposta a escrevendo de maneira diferente é anti producente e de certa forma desrespeitosa, vejo pertinente a interrupção apenas quando a tentativa de ajuda é ineficiente e/ou claramente errônea. Existem outras formas de se fazer marketing pessoal.

Jailton,

Você

Não somente eu Jailton, outros já reclamaram com o Sr como o Sr já sabe, isso é no mínimo deselegante.
Sabemos do seu conhecimento e acho que acrescenta ao Fórum, mas a sua forma de demonstrar isso é um pouco irritante, pois afasta a outros que querem ajudar por quebrar o raciocínio da ajuda. Não existe uma regra para esse tipo de comportamento no fórum, mas o bom senso e o respeito aos colegas deve sempre prevalecer.

Quando a interferência completa à ajuda anterior, é bem vinda, mas quando ele copia a ajuda anterior só mudando a escrita, aí atrapalha, poluí e incomoda a ter que ficar lendo algo que não esta contribuindo.

Quanto a ser bom ou ruim ao usuários, acho que cabem a eles julgar, não? Pelo que me lembro nas vezes que te ajudei você nunca reclamou.

Então… Posso não figurar com números expressivos nesse fórum. Entretanto, acompanho quase tudo aqui desde 2006-2007.
Existem realmente pessoas aqui com alto nível em conhecimentos sobre T.I. e SC, e, isso é inquestionável.
Algumas respostas, mesmo, colocadas de forma rústicas, ajudam os usuários sem sombra de dúvidas. Mas, como não conhecemos pessoalmente os colaboradores, algumas respostas causam a sensação que, ajudou, porém, de certa forma não ficou agradável a conduta nas coisas escritas, pra que lê.
Jeitão da madeira é jeitão da madeira. Devemos relevar situação adversa em tudo, mesmo porque, se estamos aqui é para o bem comum, e que, se possível, corrijamos alguns deslizes, que faz parte integrante da evolução geral. (tem por objetivo nos unirmos cada vez mais)

Sim normalmente quem causa ‘ATRITO’ não sou eu:
http://www.scriptcase.com.br/forum/index.php?topic=14805.0;topicseen

Mas ele já falou então tá falado, se é assim que seja, vou respeitar a vontade.

Bem frisado Roberto.

Não devemos avaliar ninguém no âmbito pessoal, afinal todos temos problemas, jeitos e trejeitos, e muitas das vezes tratamos o assunto sem perceber se estamos incomodando alguém.

Para isso sugiro:

  1. Sempre que for responder um tópico leia todas as respostas anteriores.

  2. Caso haja questionamentos não respondidos pelo originador da dúvida, não interponha com sugestões sem esperar a resposta do originador.

  3. Se membro já vêm dando respostas sequências, não poste ada para interromper a linha de raciocínio. (as vezes na primeira resposta pode haver sem querer que dois membros estão respondendo ao mesmo tempo (isso vive acontecendo comigo, Willian, Jorge, Kleyber) nesse caso é aceitável, geralmente eu tiro o time de campo e deixo para o colega ir respondendo.

  4. Eu nunca dou respostas bate pronto, isso não é ajudar. Ajuda verdadeira é aquela que ensina, mostra o caminho, mas não dá a resposta pronta.

  5. Muitas vezes o debate sai da linha da resposta ao originador que deveria ser o objetivo principal, e fica uma guerrinha particular de respostas, e o originador nem se quer volta para avaliar, some, desaparece e o tópico fica o vazio

Então, volto a repetir: Tudo é questão de bom senso nunca levarmos para o lado pessoal.

Jailton, o link representa muito bem o que quero dizer aqui, vejo que é bem atento.

Nesse caso, pelo fato de eu ter interpretado a questão do originador de forma diferente a solução inicial dada ao colega Rodrigo, por achar pertinente (nesse caso, pois não é habitual) eu me manifestei diretamente na solução dele, e como por hábito, tenho sido sempre curto nas minhas observações, acabei dando a impressão de arrogância, a qual me justifiquei, e o Rodrigo como grande profissional que é, com humildade deu outra solução melhor ainda, e tudo ficou bem, sem levar para o lado pessoal.
E esse tópico também afirma o que eu disse sobre o originador nem se quer manifestar para esclarecer melhor a questão.

  • Muito bem lembrado.