FoxPro/Visual FoxPro - Generador de Formulas

   
Vista:

Generador de Formulas

Publicado por Reinaldo (3 intervenciones) el 09/06/2009 22:42:03
Buenas tardes; estoy realizando un programa que genera formulas para calcular precios de ventas.

en mi frm. coloque un boton llamado "validar" y un editbox para armar una fomula.
Coloque el siguiente codigo:

If Empty(ThisForm.edit_Formula.Value) Then
Wait Windows 'No hay resultado por Mostrar.' NoWait
Return
EndIf

Local lcCadena, lcResultado

lcCadena = validador(Alltrim(ThisForm.edit_Formula.Value))

******Validador es un prg q hace esto:*********

LPARAMETERS lcCadena
lcCadena = ALLTRIM( STRTRAN(lcCadena, CHR(13), ''))
lcCadena = ALLTRIM( STRTRAN(lcCadena, CHR(10), ''))

Return lcCadena
***************************************************

lcResultado = Alltrim(Str(&lcCadena, 15, 2))

If Vartype( lcResultado) = "C" Then
Wait Windows "El valor de la expresion es: " + lcResultado Nowait
Else
Wait Windows 'Error en la expresion..no se puede calcular' NoWait
Endif

ThisForm.edit_Formula.SetFocus

Esto funciona bien... Mi problema esta en lo siguiente:
tengo una tabla llamada "Formula" q es asi: (Ejm:)

codigo expresion
A001 (1+1)*3
A002 Formula('A001')+5

El A002 llama a la formula A001 que tiene su calculo.

Como hago para leer un expresion que dentro de ella llame a "n" formulas que se encuentran anidadas.

Se que esto es un metodo recursivo; He buscado y he tratado pero no me sale ni la logica ya para solventar esto.

Necesito ayuda por lo menos moral y logica para esto.

Gracias anticipadas

Mi correo es reimon25@gmail.com
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Generador de Formulas

Publicado por andy (221 intervenciones) el 10/06/2009 01:18:22
No entiendo bien tu problema.
A que llamas "leer" la expresion?
Esas formulas deben ejecutar algo o calcular con relacion a qué?
Ojo, quizas sea yo el que no interpreta la cuestion.
Si no encuentras ayuda, puedes ampliar tu consulta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Reinaldo (3 intervenciones) el 10/06/2009 02:12:54
Ok; me explico mejor.

1.- Tienes una tabla llamada formula.
2.- Hasta ahora con 2 campos (co_formula,Expresion).

co_formula----------------------------Expresion
A001 ---------------------------- '1+1'
A002 ---------------------------- (Formula('A001')+2)*3/15
A003 ---------------------------- (Formula('A002')-15)


Tengo un editbox donde el usuario puede construir formulas como pueden también pueden invocar formulas para construir otras.

mi problema es que al momento de evaluar una formula; y esta tiene agregadas otras formulas en su calculo. No encuentro la manera de mostrar su resultado.

ves el ejemplo de la tabla de arriba ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Jose Gamboa (33 intervenciones) el 11/06/2009 00:50:18
Por lo que veo no deberias de tener mucho problema en los resultados ya que si la funcion Formula esta bien programada no debe haber problemas
Ej.
si quisieras calcular Formula('A003') + Formula('A002') + 15 -2
el resultado seria : el resultado de A003 + el resultado de A002 + 15 - 2
la logica es simple.
lo que tendria que pasar en la funcion formula es por ejemplo para Formula('A003'):
LPARAMETERS id_formula & id formula = 'A003' Caracter
select tabladeformulas &&seleccionamos la tabla donde estan las fomulas
locate for idformula = id_formula &localizamos dentro del campo que contiene el id de formulas el que coincida con la id pasada a la funcion
if found() && si se encuentra ejecuta la expresion en el campo expresion
lReturn = eval(campo_expresion) & el valor del campo expresion con la id 'A003' es '(Formula('A002') + 2)*3/15'
&&& la funcion eval retornara el valor de Formula('A002') y recursivamente al ejecutarse esta formula dentro de su mismo proceso llamada a Formula('A001') ya que la expresion de 'A002' tiene Formula('A001') etc...
else
WAIT WIND "formula no encontrada"
lReturn = 0
endif
Return lReturn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Reinaldo (3 intervenciones) el 11/06/2009 19:41:30
gracias hermano.

Me fue de gran ayuda tu consejo.
Una cosa... eval() no hace algo parecido a evaluate() ???

Ya tengo el generador de formulas. Pasame tu correo para que lo tengas mi pana y me des tu opinion del codigo porque de verdad me costo mucho desarrollarlo

Gracias mi pana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Jose Gamboa (33 intervenciones) el 12/06/2009 18:14:34
JjJjjj si es el mismo, me acostumbre a usar el nombre corto de 4 letras de las funciones como en vfp6.
Un gusto poder ayudar chao
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Jose Gamboa (33 intervenciones) el 15/06/2009 16:42:16
Por cierto, mi correo es admin_lepetitparis@hotmail.com, para lo que se te ofrezca mas directo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por Ligia Gonzalez (1 intervención) el 07/08/2009 14:38:49
como hago para obtener el porcentaje de cierta cantidad de un determinado campo, o de cifras individuales.

agradezco tu colaboracion

dios te Bendiga

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Generador de Formulas

Publicado por ESTEBAN (1 intervención) el 17/04/2014 18:55:11
Saludos compañero, me podrias por favor enviarme el archivo de formulas , gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar