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 [email protected]
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 [email protected]
Valora esta pregunta


0