Access - Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

 
Vista:
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 08/08/2018 21:55:11
Hola, les escribo para ver si pueden ayudarme con lo siguiente. Tengo un formulario con un cuadro de texto que contiene una expresión y quiero que el resultado de dicha expresión se almacene en una variable Integer mediante código.

Mi cuadro se llama "Fórmula arriba", dentro de ese cuadro de texto tengo la expresión "m_ancho-10". En Visual Basic "m_ancho" es un Integer y quiero asignar a otro Integer llamado "medida arriba" el resultado.

El obvio problema es que si hago:

Dim m_ancho as Integer
Dim medida_arriba as Integer

m_ancho=1000
medida_arriba = Me.Fórmula_arriba

Salta un error de tipos porque claramente VB intenta asignar texto a un entero, pero lo que quiero es que se interprete como si fuera:

medida_arriba = m_ancho-10

¿Como puedo hacer para hacerle entender a VB que lo que quiero es calcular la expresión que está dentro del cuadro de texto y asignar ese valor a "medida_arriba"?

Desde ya muchísimas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Anonimo (3312 intervenciones) el 08/08/2018 23:55:06
Funcionara o no según lo permita el entorno.

Evaluar a un texto como numero lo hace la función VAL, si se trata de una expresión se utiliza la función EVAL (en la ayuda de Access hay una explicación mas amplia).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 00:11:28
Muy agradecido por tu respuesta, se acerca!!!, pero sigue sin funcionar,

medida_arriba = Eval(Me.Fórmula_arriba)

Ahora me sale el error 2482 diciendo que no encuentra el nombre "m_ancho" al que hago referencia en mi expresión. ¿Lo estará tomando como un objeto del formulario y no como la variable que está declarada?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Naren
Val: 127
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Naren (22 intervenciones) el 09/08/2018 00:10:40
en lugar de usar una variable "m_ancho" podrias usar un control como un cuadro de texto y luego la expresion seria [m_ancho]-10, de esa manera siempre se calcularia. es una idea, pero en realidad no logro entender muy bien lo que querés hacer, si pudieras darme mas detalles tal vez..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 00:16:26
Si como no, te doy mas información, quiero que la expresión se pueda escribir en un cuadro de texto, que posteriormente estará vinculado a algún registro porque necesito que la expresión sea personalizable por el usuario desde el formulario.

Es algo así como un producto compuesto, y el usuario debe poder escribir la expresión que determinará cual es la medida del subproducto que compone al principal, por eso necesito que VB lea la expresión desde los cuadros de textos y luego aplique los cálculos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Naren
Val: 127
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Naren (33 intervenciones) el 09/08/2018 00:22:09
por ello te diria que podés usar cuadros de texto para cada variable que va a contener tu expresion, el usuario llena los cuadros de texto y puede referenciarlos según su nombre.. sería una forma.. o tal vez lo que querés hacer es algo como excel donde el usuario escribe las referencias de celda para hacer formulas que luego crean un resultado? tenes formulas especificas en mente o vas a dejar apertura para que el usuario haga las formulas que quiera? nunca he usado la funcion eval, voy a probarla a ver como funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 00:27:21
Las fórmulas no son específicas, el usuario debe poder crearlas y modificarlas de acuerdo a sus necesidades. Había evaluado la posibilidad de los cuadros a modo de variables, pero dada la cantidad de ellas que puede tener un producto, se haría un formulario demasiado complicado y sobrecargado de datos, por eso el tema del código...
Y aun así, sucede lo mismo con los cuadros, cuando almacenas la expresión adentro de otro cuadro esa expresión se toma como texto y si usas un cuadro mas para poner el resultado no lo hace, solo lo toma como texto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Naren
Val: 127
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Naren (33 intervenciones) el 09/08/2018 01:14:32
ahorita lo unico que se me ocurre que podria funcionarte, es crear tu propio interprete de funciones, aunque sea algo primitivo porque funcionaria solo para tu caso especifico.

la funcion eval, segun estuve revisando, podria servirte, pero tendrias que enseñar al usuario a crear expresiones complejas, porque en el caso de m_ancho-10 el usuario tendria que escribir [m_ancho] & "-10"

creo que puedo hacer un ejemplo y te lo subo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Naren
Val: 127
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Naren (33 intervenciones) el 09/08/2018 04:13:34
Hice un formulario con tres cuadros de texto y un boton. el primer cuadro de texto se llama m_ancho. el segundo se llama m_cambio. el tercero se llama expresion. Si escribis valores en los dos cuadros de texto, podes escribir una expresion para usarlos en calculos, pero se debe poner toda la ruta de referencia, no basta con usar solamente el nombre del control. podes probar con varias expresiones y al presionar el boton se muestra el resultado de la expresion. podes probar varias expresiones a ver que tal

1 +1
forms.f.m_ancho
forms.f.m_ancho + 1
forms.f.m_cambio * 5
forms.f.m_ancho/forms.f.m_cambio

Di_ioOcXsAAI37_

este es el codigo del boton

1
2
3
Private Sub cmdEvaluar_Click()
 MsgBox Application.eval(expresion)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 14:04:35
Agradezco tu trabajo, es funcional la opción, pero vuelvo al tema de que no puedo poner tantos cuadros de texto como los que debería poner en el formulario. Y si, ademas se hace muy complejo para un usuario común escribir expresiones tan complicadas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Anonimo (3312 intervenciones) el 09/08/2018 14:28:42
Puestos a facilitarle al usuario final unos cálculos complejos de forma sencilla ….

Aporto ideas:
En lugar de un cuadro de texto, utilizar combos (en el combo se seleccionaría el origen del dato), si en el combo se utilizan DOS columnas en la que una (la visible) describe el origen y la otra (puede estar oculta) la ruta absoluta, tenemos un paso adelantado.

Otro combo para las operaciones permitidas (sumas, restas potencias ……..)

Ambas se pueden repetir tantas veces como operandos se prevean (quizás tres o cuatro para datos y siempre una menos para operadores)

Al final se construiría la expresión en base a concatenar los datos introducidos y el resultado iría a ……. ¿otro combo con el destino?

Solo es cuestión de analizarlo y ver si cumpliría con la necesidad …. el resto vendría después (la adaptación al entorno real)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Milton
Val: 20
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Milton (4 intervenciones) el 09/08/2018 15:51:27
Saludos te aconsejo que uses la función replace y despues evalua con la función eval la expresión, convierte tus variables a string para que sea fácil ejemplo:

1
2
3
4
5
6
7
Dim m_ancho As String
Dim medida_arriba As Integer
Dim Strexpr As String
m_ancho = "1000"
Strexpr = Replace(Me.Texto0, "m_ancho", m_ancho)
medida_arriba = Eval(Strexpr)
Me.Texto14 = medida_arriba,

es una idea.

Puedes visitar mi canal de youtube
https://www.youtube.com/user/MiltonIzaguirreMoral
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 16:34:47
Bien Milton! tu propuesta es válida y funciona, pero hay un problema mas, el algunos casos las expresiones van a contener muchas variables relacionadas, en una expresión puede haber hasta 5 o 6 variables del producto padre que formen parte del cálculo del producto hijo, lo que plantea el problema de como hacer un Replace de todas las que intervengan...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 17:24:26
Creo que una solución viable sería crear un Replace por cada variable algo como:

1
2
3
reemplazo0 = Replace(Me.Fórmula_arriba, "m_ancho", m_ancho)
reemplazo1 = Replace(reemplazo0, "m_alto", m_alto)
reemplazo2 = Replace(reemplazo1, "cant_hojas", cant_hojas)

y debería seguir haciéndolo N veces según la cantidad de variables que tenga, al final la última "reemplazoN" tendría todo listo para el:

1
medida_arriba = Eval(reemplazoN)

... podría crear una Función para llamarla y hacer las cosas mas rápidas... tal vez...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Milton
Val: 20
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Milton (4 intervenciones) el 09/08/2018 17:24:26
Oki doki German, sería bueno que pongas todos los escenarios posibles para darte una mejor idea de como solucionarlo, así se benfician los demas usuarios, independientemente que tengas quinientas variables haces el reemplazo primero, y hasta después evaluas la expresión, también es aconsejable validar si se encuentra dicha palabra en la cadena y mandar un mensaje al usuario error de expresión o algo así, pero mientras no pongas todos los escenarios, no somos adivino de lo que realmente quieres hacer.

Espero no te moleste por decirlo, que aquí estamos para ayudar, todo y cuando se explique bien el planteamiento del problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 09/08/2018 17:26:14
No, no me molesta en absoluto, de hecho creo que tengo el tema solucionado gracias a ustedes, me autocontesté arriba...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Milton
Val: 20
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Milton (4 intervenciones) el 09/08/2018 22:39:20
Hola German, te hice un cajero de Expresiones, es mejor que los usuario tengan comodidad, y a ti se te hace más fácil la vida

Visita mi canal de youtube
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 21
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Asignar a una variable el resultado de una expresión almacenada como texto en un cuadro de texto

Publicado por Germán (18 intervenciones) el 10/08/2018 14:45:29
Ha ido usted mas allá del deber!!! gracias Milton!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar