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

formula desde base de datos

Estas en el tema de formula desde base de datos en el foro de Visual Basic clásico en Foros del Web. Hola amigos: En un campo de la base de datos tengo almacenada una formula que deseo utilizar en el programa de la siguiente manera: Variable=data1.recorset![formula] ...
  #1 (permalink)  
Antiguo 21/10/2006, 02:58
 
Fecha de Ingreso: abril-2004
Ubicación: Añatuya
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
formula desde base de datos

Hola amigos:

En un campo de la base de datos tengo almacenada una formula que deseo utilizar en el programa de la siguiente manera:

Variable=data1.recorset![formula]

el tipo de dato del campo de la base de datos es string y el contenido seria algo asi "dato1 * 2 + dato2" de tal modo que al reemplazar la sentencia, supuesamente me tendria que quedar algo asi:

Variable = dato1 * 2 + dato2


pero en realidad estos no sucede y me queda asi:

Variable = "dato1 * 2 + dato2"

como puedo hacer para almacenar una formula en un campo de la base de datos y despues utilizarla como código??????

Seguro que usteden me podran ayudar!!!!!!!!!!!!!
Gracias!!!!!!!!!!!!
__________________
Un angel le dice a Dios - Señor han descifrado el genoma humano - a lo que Dios contesta - Condenados hackers, voy a tener que cambiar la contraseña
  #2 (permalink)  
Antiguo 21/10/2006, 12:46
Avatar de black_devil  
Fecha de Ingreso: junio-2006
Mensajes: 89
Antigüedad: 17 años, 10 meses
Puntos: 1
Mmm a ver, en estos momentos se me puede ocurrir que cuando guardes la fórmula en tu BD, la guardes como una función que tienes en tu sistema, por ej.

Public sub funcion(a)
total = (a+b)
End Sub

lo que guardarias en la BD seria el nombre de tu función "funcion(a)" y cuando la quieras utilizar la buscas, la colocas en un control por ej. en un textbox y a través de un botón haga la comparación, por ej.

textbox1.text = rs!nombre_funcion

en vista diseño mostria el nombre de tu función y al hacer click en el botón realice la operación, ojalá te sirva la idea...

saludos
  #3 (permalink)  
Antiguo 22/10/2006, 00:39
 
Fecha de Ingreso: abril-2004
Ubicación: Añatuya
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
La cosa es asi, para que lo entiendan bien...

en una tabla (data1) de mi base de datos tengo un campo que se llama Valor_Inicial, existen varios registros con Valor_Inicial conteniendo distintos valores...
en otra tabla (data2) tengo las distintas operaciones a realizar con Valor_Inicial (Las formulas estan en una tabla porque se pueden modificar, de otra manera estarian en el codigo y todo sería mas facil...)
Y las operaciones realizadas se guardan en una tercera tabla (data3)...

ahora lo que necesito es hacer lo siguiente:

tomar Valor_inicial y cargarlo en una variable que se llame Calculo_1 utilizando una de las formulas de la tabla, entonces mi idea era hacer esto:

// suponiendo que la formula almacenada en data2 es V_I * 0.03

dim V_I as long // esta variable tomará en contenido de Valor_Inicial

V_I = data1.recordset![Valor_Inicial]

Calculo_1=data2.recordset![formula] // aqui sale el error

data3.recorset.addnew

data3.recorset![resultado]=Calculo_1

data3.recordset.update

el error me da porque al reemplazar

calculo_1 = data2.recorset![formula]

esta haciendo esto: Calculo_1 = "V_I * 0.03"

y no como yo lo necesito, que sería asi : Calculo_1= V_I * 0.03 // sin las comillas.
aun no se como solucionarlo......................
__________________
Un angel le dice a Dios - Señor han descifrado el genoma humano - a lo que Dios contesta - Condenados hackers, voy a tener que cambiar la contraseña

Última edición por roortiz; 22/10/2006 a las 00:45
  #4 (permalink)  
Antiguo 23/10/2006, 06:38
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 17 años, 9 meses
Puntos: 2
hola roortiz

si mal no recuerdo no era muy complejo, pero necesitas usar una referencia a scirpt control y declarabas un objeto investiga en internet o en la ayuda sobre ese control y veras ;)
  #5 (permalink)  
Antiguo 23/10/2006, 10:45
 
Fecha de Ingreso: octubre-2006
Ubicación: En la mitad del mundo
Mensajes: 37
Antigüedad: 17 años, 6 meses
Puntos: 0
Hola roortiz. Bueno, esto es lo más que te puedo ayudar.
Defines la siguiente función:

Private Function MyVal(s As String) As Double

Dim xl As Object

Set xl = CreateObject("excel.application")
xl.Workbooks.Add

xl.ActiveCell.Formula = "=" & s
MyVal = xl.ActiveCell.Value

xl.ActiveWorkbook.Close savechanges:=False
xl.Quit
Set xl = Nothing

End Function

y al llamarle le envias como parámetro la expresion que quieres evaluar, el único problema es que no se la puedes enviar directamente como
viene de la BD, sino que tienes que enviarle los valores numericos que quieres calcular (Ejm: "2+3").

No sería más fácil si guardaras en tu BD las variables y el operador(es) por separado?

Puedes encontrar la información completa referente a esta función en :

"//support.microsoft.com/default.aspx?scid=kb%3Bes%3B159974"

anteponiendo el "http", lo que sucede es que todavia no puedo enviar enlaces.

Saludos
  #6 (permalink)  
Antiguo 23/10/2006, 11:37
Avatar de tazzito  
Fecha de Ingreso: agosto-2006
Mensajes: 381
Antigüedad: 17 años, 9 meses
Puntos: 2
veamos agrega la referencia a Microsoft Script Control
y luego usa la siguiente funcion

function EvaluaText(CadenaEvaluar as string) as string
Dim miScript As ScriptControl
Set miScript = New ScriptControl
miScript.Language = "vbScript"
miScript.ExecuteStatement ("R=" & CadenaEvaluar )
EvaluaText= miScript.Eval("R")
set miScript=nothing
end Function


y lo ejecutas asi

calculo_1 = EvaluaText(data2.recorset![formula])

OJO no se de que tipo es Calculo_1 pero ahi tu lo comviertes yo por ahora lo devuelvo como text en la funcion
  #7 (permalink)  
Antiguo 28/10/2006, 02:51
 
Fecha de Ingreso: abril-2004
Ubicación: Añatuya
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
o sea que basicamente lo que estoy buscando es como convertir una variable en una sentencia o parte de una sentencia...
__________________
Un angel le dice a Dios - Señor han descifrado el genoma humano - a lo que Dios contesta - Condenados hackers, voy a tener que cambiar la contraseña

Última edición por roortiz; 28/10/2006 a las 04:02
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 21:51.