1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Criação de variável com fórmula

Discussão em 'Progress 4GL' iniciado por tandujar, Maio 30, 2017.

  1. tandujar

    tandujar Membro Participativo

    Bom dia pessoal,

    Precisa criar um campo onde irei atribuir uma fórmula.

    Por exemplo:

    assign formula = "x+y+z".

    Se eu der um replace em cada variável por um número beleza.

    Mas como faço para efetivar o cálculo da fórmula depois ?

    Obrigado,

    Tiago
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Como você pretender usar isso?
  3. tandujar

    tandujar Membro Participativo

    Aqui onde trabalho temos algumas particularidades relacionadas ao cálculo do ICMS ST.

    Já tenho criado as mesmas em uma upc da bodi317 e funcionam normalmente.

    Porém eu gostaria de criar uma tabela/cadastro específico para armazenar estes cálculos, assim o próprio usuário pode alterar a fórmula (ou apenas consultar), inativar, etc.

    Exemplo:

    Para o estado de GO, o calculo da ICMS ST é x

    Se na upc da bodi317 eu encontrar nesta tabela o estado em questão, pegaria a fórmula e apenas substituiria as variáveis pelos respectivos valores e pronto (definiria um de -> para dentro da bodi317).

    Estou pensando ainda, mas seria algo assim.
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu criei uma calculadora, cheio de substring(), entry() e tudo mais para transformar a string em formula, primeiro analiso os parenteses, depois que estou dentro do parenteses mais profundo, analiso os sinais, dai pega conteudo anterior e posterior, faz a conta, substitui a formula pelo resultado, inicio o processo de novo:
    calculo = 'x + z + y'.
    na primeira passada vira 'xz + y'
    na outra passada vira'xzy'.

    calculo = '1000,00 * (1 + (10 / 100))'
    primeira passada fica '1000,00 * ( 1 + 0,10)'
    segunda passada fica '1000,00 * 1,10'
    terceira passada fica '1100,00'

    mas assim, vai ter que escovar bits, existe o recurso das macro substituição, mas só funciona com fonte, vc não pode compilar.

    E por ultimo, pode fazer igual o HCM faz, abre um excel em modo invisivel, manda a formula pra celula e depois captura o resultado.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    No javascript existe uma função eval que faz essas coisas e muito mais...isso que o Richard fez é cabuloso....kkkkkkkkkkkkk...parabéns!!! kkkk

Compartilhe esta Página