Visual Basic - macrosustitucion

Life is soft - evento anual de software empresarial
 
Vista:

macrosustitucion

Publicado por alberto (4 intervenciones) el 25/04/2005 21:52:21
necesito de su ayuda e buscado por todas partes ,preguntado y todos me dicen que no saben por eso acudo a ustedes.
tengo una tabla llamada personal estructurada asi
cedula texto 10
sueldo double
dias double
lph double
sso double
otros double
con 30 registros
otra tabla llamada formulario estructurada asi
formula texto 50 con 1200 registros con lo siguiente
tbpersonal!sueldo * tbpersonal!dias
tbpersonal!sueldo * tbpersonal!sso ect......todas son formulas
tbpersonal hace referencia a la tabla personal y sueldo al campo sueldo

hago un bucle y recorrer la tabla formulario y hago esto

dim a as double

a=tbformulario!formula

la pregunta es esta como hago para que me de un valor numerico
tomando en consideracion que tbformulario!formula
es una formula que hace referencia a la tabla personal y campo sueldo y dias respectivamente
probe con esto y me da cero

a=val(tbformulario!formula)
y me arroja 0

no puedo ir directamente a la tabla personal porque esta formula cambiara en el bucle.mucho sabre agradecer su ayuda
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

RE:macrosustitucion

Publicado por Christian (675 intervenciones) el 25/04/2005 22:05:58
Si utilizas
dim a as double

entonces
a=CDBL(tbformulario!formula)
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

RE:macrosustitucion

Publicado por Cecilia Colalongo (3116 intervenciones) el 26/04/2005 00:25:53
No existe la macrosustitución en VB. Puedes utilizar el ScriptControl y el método Eval y primero agregar las variables:

With ScriptControl1
' Todas las variables por ejemplo.
.AddCode "sueldo=" & tblpersonal!sueldo

Resultado = .Eval(tblpersonal!formula)
End With

En http://msdn.microsoft.com/library/en-us/dnexpvb/html/usingscriptcontrolmethods.asp tienes documentación del control.
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

RE:macrosustitucion

Publicado por Alberto (4 intervenciones) el 28/04/2005 13:40:30
Buenas,Gracias por preocuparte por un desconocido,pero
siempre hay un pero
no soy muy ducho trabajando con este control de hecho primera vez que lo oigo.
probe esto el resultado es cero,busco en la ayuda muy escueto
busque por otro lado y lo que encuentro y tratandolo de adaptar a mis requerimientos siempre el resultado es 0

sueldo=tbcodigos!formula
Text1 = "Function Multiplica(a, b)" & vbCrLf & _
" multiplica = a * b" & vbCrLf & _
"End Function"
Text2 = "Multiplica(1,sueldo)"

'Ejecutar el contenido del Text2
Dim retValue As Variant
'Añadimos el código y evaluamos
With ScriptControl1
.AddCode Text1
.Language = "VBScript"
'Asignamos el valor devuelto
retValue = .Eval(Text2)
' y lo mostramos
MsgBox "El valor devuelto por: " & Text2 & vbCrLf & " es: " & retValue
End With

probe la funcion eval asi
eval("3" * "2") y me arroja 6 ok.
pero yo lo que tengo es en una variable una formula
por favor si mepuedes enviar un ejemplo mas detallado te lo sabria agradecer
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

RE:macrosustitucion

Publicado por Cecilia Colalongo (3116 intervenciones) el 28/04/2005 19:25:07
El control VBScript trabaja siempre en un espacio de variables separado al de VB, por lo que en tu caso devuelve cero la función porque la variable 'sueldo' pertenece al entorno de tu aplicación y no al del control.

Lo que deberías hacer antes es .AddCode "sueldo=" & tbcodigos!formula
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

RE:macrosustitucion

Publicado por Roberto (1 intervención) el 28/04/2005 19:28:41
Disculpen que meta, pero en que casos puedo utiliza el VBScript y en que me beneficia.
Cecilia si me respondes te lo agradeceria.

Gracias.
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