Jump to content
Ericsson Berg

Substituir e calcular fórmula em string com valores de uma consulta no DB

Recommended Posts

Iai Pessoal, postando pela primeira vez aqui nesta área!!

 

Tenho uma situação muito complicada para resolver e gostaria da ajuda de vocês.

 

Como substituir os dados de uma fórmula que está em string pelo resultado de consultas no banco de dados?

 

Os números que estão na fórmula correspondem aos dados de uma tabela onde preciso trazer o valor como retorno.

 

Select codrelatorio, situacao,  formula

Select 10, "teste", "([981] + [988]) / [700]" formula

 

Ex.: Pegar o número 981 e realizar uma consulta em uma tabela, retornando assim o valor 1090.01;

begin
@valor = SELECT v.valor FROM table_exemplo WHERE codigo = 981

return @valor;
end

Fórmula: (1090.01 + [988]) / [700]

 

E assim por diante até ter todos os números da fórmula substituídos e ter este resultado:

 

Select 10, "teste", (1090.01 + 150) / 55  formula

 

 

Share this post


Link to post
Share on other sites

Resolvido.

 

Mamão com açúcar caso alguém precise um dia.

 

Fica faltando executar a soma, nisto ainda estou quebrando a cabeça. 

 

Caso alguém saiba como realizar a soma de uma operação que está como string no mysql, por favor me ajude.

 

Equivale a função eval() do javascript.

select convert_formula("[792]+[793]+[794]+[795]+[911]+[912]") as valor;
Function

CREATE DEFINER=`hoster`@`%` FUNCTION `convert_formula`(formula varchar(255)) RETURNS varchar(555) CHARSET latin1
BEGIN
SET @newformula = formula;
SET @limitador_loop = quantCaracter(formula,"[");
SET @count = 1;
 
     WHILE(@count <= @limitador_loop) DO
     
      SET @cod_derex = substring_index(substring_index(formula,']',@count),'[',-1) ;
      SELECT valor FROM tmp_relger WHERE cod_derex = @cod_derex INTO @valor;
      SET @newformula = REPLACE(@newformula,@cod_derex,@valor); 
      SET @count = @count+1;

     END WHILE; 

     SET @newformula = REPLACE(REPLACE(@newformula,'[',''),']','');

RETURN  @newformula;
END
Function

CREATE DEFINER=`hoster`@`%` FUNCTION `quantCaracter`(x varchar(255), delim varchar(12)) RETURNS int(11)
BEGIN

RETURN (length(x)-length(REPLACE(x, delim, '')))/length(delim);
END

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Jefferson andre
      Saudações mestres,
       
      preciso que um determinado campo ao passar por uma funcao pegue algumas informacoes noquery e atualize determinados campos no mesmo form.
       
      Pensei em algo assim mas nao sei como proceder
      <?php
      function pegardados(){
      seleciona a tabela
      $campoum = tabela['campoum'];
      $campodois = tabela['outrocampo'];
      $campotres = tabela['outrocampodenovo'];
       
      como atualizar os dados em determinados campos do form?
      }
      ?>
       
      <html>
       
      <form action="xxx.php">
      <input campo name="campo" id="campo" onChange="pegardados();"  value ="<?php echo $campoum; ?>" </input>
      <input campo name="campodois" id="campodois" </input>
      <input campo name="campotres" id="campotres"  </input>
      </form>
      </html>
       
      apenas um exemplo grosseiro mas da pra passar a ideia do que eu preciso.
       
      No meu caso a opcao onChange nao esta funcionando tambem e nao entendi o motivo, ja que eh apenas para chamar uma funcao php
       
      Qualquer sugestao eh bem vinda, obrigado
       
      algo assim 
       
      Tem como fazer isso
       
    • By Jehlemos
      Olá,
      Boa noite, estou fazendo o seguinte enunciado em uma plataforma de estudos: Para Usain Bolt calcular sua dieta é preciso o uso de um simulador, que de acordo com o número de voltas diga quantas calorias é preciso consumir, para poder realizar um exercício de trote.
      As calorias são calculadas da seguinte maneira: calorias (que consome a cada volta), ou seja 5 multiplicado (*) pelo número da volta atual, já que cada vez as voltas consomem mais e mais calorias.
      Fiz o seguinte código: 
      function caloriasDeTrote(n) { var caloriasPVolta = 5; var caloriasTotais = (caloriasPVolta * n) for(var i = 1; i <= n; i++){ caloriasTotais = (caloriasPVolta *= i) } return caloriasTotais } E a plataforma informa os seguinte erro:
      Sua solução não passou : 
      x caloriasDeTrote(2) Um trote de 2 voltas deveria retornar 15 V
      10 == 15 Alguém pode me ajudar?
      Grata! 
       
    • By Jehlemos
      Olá,
      Boa Tarde!
      Estou em uma plataforma de estudos no qual se executa exercícios e testes, o enunciado é:
       
      Escreva a função pode SeAposentar que recebe por parâmetro a idade, o sexo e os anos de contribuição previdenciária que uma pessoa tem, exemplo: podeSeAposentar(62, "F", 34) true.
      A idade mínima para se aposentar para mulheres é 60 anos, enquanto que para homens é 65. Em ambos os casos, deve ter pelo menos 30 anos de contribuição.
       
      function podeSeAposentar (idade, sexo, anosTrabalhados) { if(anosTrabalhados >= 40) { if(sexo == "F") { if(idade >= 60) { return true; } } else if(sexo == "M") { if(idade>= 65){ return true; } } } return false; }
      >
      Sua solução funcionou, mas aponta o seguinte erro:
      Objetivos que não foram atendidos: podeSeAposentar faz comparações contra strings.
       
      **O que está errado? Alguém pode me ajudar?** 
      Obrigada!
    • By Isaias Nori
      Pessoal, Boa Noite!
       
      Sou novo no fórum e novo também no mundo DEV.
      Antes de postar fiz uma longa pesquisa na web e no próprio fórum porém não encontrei algo que me ajudasse.
       
      De forma resumida vou tentar expor minha dúvida.
       
      Estou tentando desenvolver uma aplicação simples em HTML/CSS E Javascript, minha intenção é usar uma API de consulta de mensagens que se encontra no seguinte link:
      https://www.redemet.aer.mil.br/?i=facilidades&p=api-redemet
       
      Ao realizar a consulta passando os parâmetros pela url, obtenho uma página html com um body contendo a informação que preciso em formato simples.
      Minha dúvida é a seguinte:
       
      Como posso, no javascript, criar uma função em que a mesma acesse o endereço me retorne o conteúdo do body da página acessada.
      Os devidos tratamentos da mensagem recebida, farei posteriormente, preciso apenas armazena-lo, em uma string por exemplo.
       
      Obs. 1 - Não quero utilizar outras tecnologias além do html e javascript (Se for possível).
               2 - Possuo conhecimento em linguagem C# e Java, porém aplicados a desktop.
               3 - Sei que consumo de API é algo mais complexo, no entanto esta que estou tentando utilizar é simples, e creio que não requeira mtos recursos.
               4 - Perdoem-me se já existe algum tópico referente a isso, não o encontrei.
       
       
    • By igmacedo
      Preciso criar uma rota para cada usuário, mais de forma automatizada. é preciso que a url fique assim:
      site.com/compane/nome_da_empresa
       
      repare na parte em negrito, deve ser feito uma consulta no banco de dados para saber se aquele nome existe ou não, se existir, ele mostra a view1, se não existir ele mostra a view2.
       
      dessa forma eu poderia pegar o nome dos usuários que já existem no bd e passar na url na forma de string para mostra uma especie de pagina personalizada para cada um, a ideia do projeto é ser single-tenancy, então não haverá subdominio, apenas paginas, poderiam me dar um norte para construir a funçao?
      não achei nada a respeito.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.