Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Evaluar formulas complejas.-

Estas en el tema de Evaluar formulas complejas.- en el foro de Visual Basic clásico en Foros del Web. Ante todo, muy buenas a todos, soy nuevo aqui, les cuento que estoy realizando algunas prueba para poder evaluar formulas basadas en funciones por ej.: ...
  #1 (permalink)  
Antiguo 14/08/2007, 09:43
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
Evaluar formulas complejas.-

Ante todo, muy buenas a todos, soy nuevo aqui, les cuento que estoy realizando algunas prueba para poder evaluar formulas basadas en funciones por ej.:

He creado dos funciones, una obtiene un valor x de una tabla y la otra multiplica dos factores, a continuacion las funciones:

Public Function Importe1(vcategoria As Integer) As Currency
DBpath = App.Path & "\datos\tablas.mdb"
strsql = "SELECT * FROM Tbl_C_importes WHERE categoria='" & vcategoria & "'"
Set db = DBEngine.OpenDatabase(DBpath, False, False, ";pwd=" & MiPass)
Set rst = db.OpenRecordset(strsql)
rst.MoveFirst
rst.MoveLast
If IsNull(rst!Importe1) Then
Importe1 = 0
Else
Importe1 = rst!Importe1
End If
End Function

Public Function Multiplica(F1 As Currency, F2 As Currency) As Currency
Multiplica = Format(F1 * F2, "##,##0.00")
MsgBox (Multiplica)
End Function


Por otro lado estoy intentando evaluarlas con EbExecuteLine de la siguiente manera:

Private Declare Function EbExecuteLine Lib "vba6.dll" _
(ByVal pStringToExec As Long, ByVal Foo1 As Long, _
ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long


Private Sub Command1_Click()
Dim cadena As String

'En txtformula necesito poder escribir yo la formula a evaluar ej:
' Multiplica(importe1(1),3) o multiplica(32,35), etc, sin embargo no me arroja el resultado escribiendo yo la formula en el txt, pero si
'pre-escribo la linea: cadena = "Form1.text1.text=" & Multiplica(importe1(1),3) , esto me arroja el resultado esperado.

cadena = "Form1.text1.text=" & txtformula

code = EbExecuteLine(StrPtr(cadena), 0&, 0&, 0)

End Sub


Por otro lado estube tratando de evaluar las formulas con el scriptcontrol
pero tengo inconvenientes para poder meter las funciones dentro de las variables para luego realizar el Addcode como por ejemplo la funcion que pega mas arriba Importe1(), la verdad es que no se me ocurren otros metodos para evaluar formulas en tiempo de ejecucion, si alguien tiene alguna sugerencia se lo agradecere mucho.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:37.