Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2007, 09:43
mdgaspoz
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 17 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.