Calcular IMC [RESOLVIDO]

Me desculpe pela dúvida… sou médico e estou começando a aprender a mexer no Scriptcase com a intenção de fazer uma versão web de meu Prontuário Eletrônico (atualmente em Access)… já procurei em vários locais do fórum, mas não consegui resolver minha dúvida…

Tenho um formulário de único registro com vários campos, sendo um deles ALTURA e outro PESO. Gostaria que o formulário mostrasse o IMC calculado com os valores dos campos ALTURA e PESO, de acordo com a fórmula: IMC = (PESO / (ALTURA X ALTURA)).

Como posso fazer? Tenho outros formulários com campos calculados e, aprendendo a fazer operações simples com campos, vou conseguir adiantar bastante meu projeto.

Muito obrigado e aguardo !

Deve-se criar um evento Ajax do tipo OnChange no campo PESO ou um evento Ajax do tipo OnFocus no campo IMC.
Neste evento utilizar o código: {campo_IMC} = {campo_PESO} / ({campo_ALTURA/{campo_ALTURA});

Caso seja criado o evento Ajax do tipo OnChange, o cálculo será realizado após modificar o dado do campo PESO e clicar em outro campo ou tela.
Caso seja criado o evento Ajax do tipo OnFocus, o cálculo será realizado após clicar no campo IMC.

– Onde “campo_xxx” é o nome do campo que está no formulário em “Campos”.

Olá,

Primeiro, seja bem vindo ao fórum. Segundo, é interessante saber que pessoas de outras áreas veem no Scriptcase uma forma de desenvolver seus próprios sistemas. Terceiro, bom, existem algumas formas de fazer o que você precisa. Seguem abaixo:

Supondo que os campos criados são: PESO, ALTURA e IMC, então eles são definidos no SC como {peso}, {altura} e {imc}, a fórmula seria:

{imc} = ({peso} / ({altura} * {altura}));

Então temos:
1 - Criando um botão (do tipo PHP) e colocar a fórmula nesse botão;
2 - Usando o evento Ajax nos 2 campos (PESO e ALTURA), na opção OnChange, você colocaria a fórmula lá; assim, a cada vez que você mudar de valor em qualquer dos dois campos, o resultado muda;
3 - Se os campos PESO e ALTURA já estiverem preenchidos, basta colocar a fórmula no evento OnScriptInit para que a cada registro gravado ele já mostre o resultado no formulário

Uma outra dica sobre o que citei acima fica neste link: https://suporte.scriptcase.com.br/index.php?/Knowledgebase/Article/View/125/44/utilizando-eventos-ajax-onchange

Qualquer dúvida, é só postar.

rsrs agora que vi que eu e o Ronyan respondemos quase que ao mesmo tempo… mas blz

Se copiou do Ronyan Alves e postou para ganhar um LIKE… heheheeh

kkkkkkkkkkkkkkkkkkkk

Muitíssimo obrigado ! Feito e funcionado !

Agora sei utilizar campos simples calculados !

Vou migrar tudo que tenho em Access para o SC… excelente ferramenta, até mesmo para “amadores” como eu !

Mais uma vez, obrigado pelas respostas rápidas e ajuda !

Complementando… e se eu quisesse usar um campo de um outro formulário do mesmo projeto… tem como?

Explicando melhor… meu projeto atual tem uma aplicação (form_1) no qual tem o campo altura (form1_alt)…

No mesmo projeto, mas em outra aplicação (form_2), tem o peso…

Tem como calcular o imc usando campos de 2 aplicações diferentes?

Os campos fazem parte da mesma tabela ou de tabelas separadas?

Tabelas separadas…

Bom, você não pode criar um form com 2 ou mais tabelas. O form é gerado a partir de uma só tabela. Há alguma razão especial para o peso estar em uma tabela e a altura estar em outra?

Na verdade essa conta estou usando como exemplo…

Meu projeto é um prontuário eletrônico composto com um formulário “mestre” e diversos formulários “detalhes”.

Alguns dos formulários “detalhes” usam a informação IDADE, que é um campo calculado no formulário mestre…

Um dos formulários, por exemplo, calcula a frequência cardíaca máxima recomendada para exercícios físicos; essa é estimada pela fórmula: FC max = 220 - idade…

Então é simples: coloque o conteúdo desse campo em uma variável global (entre colchetes [ ]) e aí você pode usar esse campo onde precisar, por exemplo:

[c_idade] = {idade};

Aí você pode usar a variável global [c_idade} em qualquer formulário.

Obs.: Eu desenvolvi uma vez um sistema para consultório. Qualquer coisa podemos trocar experiências.

Muito obrigado mais uma vez, Kleyber. Vou testar. Vamos conversando sim !

Essa atribuição da variável eu coloco em eventos tb?

Sim, em qualquer lugar.

Mas quando faço isso, meu formulário “some” e aparece uma caixa de texto para que eu entre o valor de [c_idade]…

Defina essa variável global como SAÍDA.

???

Onde defino isso? Nos eventos mesmo… tipo OnAfterUpdate? Fiz isso e continua o mesmo problema…

Olá,

No form, em APLICAÇÃO - VARIÁVEIS GLOBAIS, veja a variável global e marque como SAÍDA.

Muito obrigado mais uma vez, Kleyber. Estou progredindo !