Foros del Web » Programando para Internet » ASPX (.net) »

[SOLUCIONADO] Formulas Dinámicas Creadas por el usuario ASP.NET VB

Estas en el tema de Formulas Dinámicas Creadas por el usuario ASP.NET VB en el foro de ASPX (.net) en Foros del Web. Buenas Tengo una consulta sobre proyecto Tengo 2 tablas en mi base de datos una llamada Variables y otra llamada Formulas en la tabla variables ...
  #1 (permalink)  
Antiguo 15/01/2016, 14:50
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 2 meses
Puntos: 0
Formulas Dinámicas Creadas por el usuario ASP.NET VB

Buenas Tengo una consulta sobre proyecto


Tengo 2 tablas en mi base de datos una llamada Variables y otra llamada Formulas

en la tabla variables tengo los siguientes campos
  • Codigo
  • Tipo : (el tipo puede ser formula o valor fijo)
  • Valor: (si el tipo es valor fillo este campo se llena)
  • Formula_id : (si el tipo es formula este campo se llena)



tengo un boton donde busca el codigo de la formula y este me devuelve la formula que esta guardada en la base de datos

Public Function formulas(seleccion As String)
Dim formula As String
seleccion = dbasp.buscar("formula_id", "variables", "codigo", "'" + seleccion + "'")
formula = dbasp.buscar("formula_formula", "formulas", "formula_id", "'" + seleccion + "'")
Return (formula)
End Function



el cual me devuelve la formula en un campo string : ( ING1 / 2 )


La pregunta es como ejecuto esa formula ?
por que primero tengo que buscar el valor de ING1 en la base de datos y luego dividirlo entre 2
  #2 (permalink)  
Antiguo 15/01/2016, 22:43
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 4 meses
Puntos: 37
Respuesta: Formulas Dinámicas Creadas por el usuario ASP.NET VB

Quiza esto pueda dar opciones:
http://es.scribd.com/doc/22767718/AR...por-el-usuario

Yo pensaria en:
- crear "al vuelo" en codigo javascript (con el EVAL que mencionan alli)
- intentar crear una instruccion SQL con los valores de los campos para que sea SQL quien ejecute las operaciones
  #3 (permalink)  
Antiguo 18/01/2016, 09:48
 
Fecha de Ingreso: enero-2016
Mensajes: 5
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Formulas Dinámicas Creadas por el usuario ASP.NET VB

Gracias WWWMaster Pude Solucionar pero de otra forma

les dejo por qui el código por si alguien lo necesita

después de encontrar la formula en la base de datos con la funcion


Código:
Dim valor = formulas(seleccion) ' Buscamos la formula del seleccion - donde selecion es el id -

' dbasp.buscar es mi funcion para  buscar en la base de datos
  Public Function formulas(seleccion As String)
        Dim formula As String
        seleccion = dbasp.buscar("formula_id", "variables", "codigo", "'" + seleccion + "'")
        formula = dbasp.buscar("formula_formula", "formulas", "formula_id", "'" + seleccion + "'")
        Return (formula)
    End Function


eso me devuelve la formula previamente almacenada en mi base de datos en una string la cual yo se que tengo en este formato ( MGT1 * 2) donde MGT el codigo de mi variable

utilizo Dim c = Split(valor, " ") la cual me divide la formula en

C(0) = "("
C(1) = "MGT1"
C(2) = "*"
C(3) = "2"
C(4) = ")"


Lo que hago es buscar en la tabla de variables cada una de las posiciones y alguna coincide con un cogido remplaza ese valor por el valor de la variable de la base de datos es decir remplaza "MGT1" por "100"

Código:
        For num = 0 To c.Length - 1 Step +1
            respuesta = dbasp.freequery("select variable_origen from variables where codigo = '" + c(num) + "'")
            If respuesta <> Nothing Then
                c(num) = "(" + respuesta + ")"
            End If

        Next

entonces la formula final queda ( (100) * 2 )




luego esto lo mando a SQL con una función y el lo ejecuta y almacena el resultado en un campo

Última edición por Chily_Aleman; 05/02/2016 a las 11:37

Etiquetas: Ninguno
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 01:29.