Hola Carmen.... lo que necesitas es ver la forma de "ejecutar" lo que transformaste. en el ejemplo que te di antes (sorry si esta en C#) el autor utiliza una capacidad que se denomina reflextion. con eso es posible ejecutar codigo en forma dinamica, exactamente lo que haces tu con el replace.
Mira aca tengo una funcion, que ejecuta codigo, en base a ciertos valores que obtengo de una base de datos. la idea es que con un ciclo foreach recorro el datatable y voy obteniendo el nombre de una formula. esa formula, la tengo previamente codificada en mi codigo. Con reflextion, lo que hago es ejecutar codigo en forma dinamica. Esto no es exactamente lo que necesitas, pero te puede dar una idea por donde investigar.
Código:
foreach (DataRow drVarForm in dttVariablesFormulas.Rows)
{
double dResultado;
string sDescripcionFormula = drVarForm["Descripcion"].ToString().Trim();
string sCodigoVariableFormula = drVarForm["CodigoVariable"].ToString().Trim();
int iCodigoVariableFormula = Convert.ToInt16(sCodigoVariableFormula);
string sNombreMetodo = drVarForm["NombreMetodo"].ToString().Trim();
// aca llamamos al metodo
dResultado = dCalcularQBE(sNombreMetodo);
}
private double dCalcularQBE(string sMetodo)
{
try
{
//Namespace.NombreClase
Type variableTipo = Type.GetType("QBE2009.QBE_Formulas");
// Que Metodo Invocar
MethodInfo variableInfoMetodo = variableTipo.GetMethod(sMetodo);
// Ojo esto solo funcionara si tu constructor es static sin parametros y si tus
//metodos son estaticos y no requieren que instancies la clase
object instanciaResultado = variableInfoMetodo.Invoke(null, null);
double resultado = 0;
if (instanciaResultado == null)
{
// esto lo hace porque no tengo otra forma de generar un NAN
resultado = (System.Math.Log(3 / -1));
}
else
{
resultado = Convert.ToDouble(instanciaResultado);
}
return resultado;
}
catch (Exception ex)
{
return (System.Math.Log(3 / -1)); ;
}
}
// aca una formula que puede estar en otra clase
static public double? dCalculaSGRAcumulado()
{
try
{
// aca una formula que hace algo y entrega un valor de vuelta
}
}
pd: sorry pero no se de la sintaxis de VB. pero es facil converytirlo
salu2
plch