Visual Basic - Variable en Scriptcontrol

Life is soft - evento anual de software empresarial
 
Vista:

Variable en Scriptcontrol

Publicado por Dario (28 intervenciones) el 12/08/2007 23:44:26
Buenas amigos!

Estoy intentando utilizar dicho control para evaluar el resultado de Funciones, el problema lo tengo cuando intento meter una funcion dentro de una variable, ej:

El siguiente ejemplo es el que encontre:

'Prueba 2 de ScriptControl
Dim sCodigo As String
Dim vValor As Variant

sCodigo = "Function Multiplica(a, b)" & vbCrLf & _
" Multiplica = a * b" & vbCrLf & _
"End Function"

'Por supuesto que también se podría asignar así:
'sCodigo = "Function Multiplica(a, b) Multiplica = a * b End Function"

'Añadimos el código, especificamos el lenguaje y ejecutamos
With ScriptControl1
.Language = "VBScript"
.AddCode sCodigo

'Usamos Run para obtener el resultado
'vValor = .Run("Multiplica", "2", "5")

'Usando Eval, nos permite que la expresión esté en
'una variable... además de hacerlo directamente,
'pero se usa de la misma forma que lo haríamos desde VB
vValor = .Eval("Multiplica(2,5)")

'Mostramos el valor devuelto
MsgBox "El valor devuelto es: " & vValor
End With

Como veran la Funcion Multiplica esta correctamente almacenada en Scodigo, ahora bien cuando intento meter la siguiente funcion en otra variable pasa lo siguiente:

sotravar = "Public Function Suma(F1 As Currency, F2 As Currency) As Currency" & vbCrLf & _ 'ya en esta linea me marca error: Se esperaba: Expresion
"Suma = Format(F1 + F2, "##,##0.00")" & vbCrLf & _ 'lo mismo aca debe ser por las """"
"End Function"& vbCrLf & _

Como lo indico, me emite el error: Se esperaba: Expresion , yo calculo que debe ser por los caracteres raros y las comillas pero no entiendo como hacer lo que pretendo, desde ya muchas gracias por su tiempo y por 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
Imágen de perfil de alberto
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Variable en Scriptcontrol

Publicado por alberto (359 intervenciones) el 13/08/2007 19:03:57
En principio si tienes que introducir unas comillas " dentro de una cadena constante deberás duplicarlas:
a=""" 'Error
a="""" 'a contendrá una comilla.
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:Variable en Scriptcontrol

Publicado por Dario (28 intervenciones) el 14/08/2007 02:03:45
Hola Alberto, gracias por tu sugerencia, intento hacerlo como me indicas pero ademas me pasa el error por ejemplo con la siguiente linea: Se esperaba fin de la instruccion


Scodigo= "Set db = DBEngine.OpenDatabase(DBpath, False, False, "";pwd=28074295"")"

Seguramente debe ser por caracteres como ( , =, etc .

Esto me esta volviendo loko, gracias nuevamente y estoy abierto a cualquier sugerencia que puedan hacer.-
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:Variable en Scriptcontrol

Publicado por Dario (28 intervenciones) el 14/08/2007 06:03:23
Buenas compañeros, nuevamente les consulto, segui realizando algunas pruebas con EbExecuteLine y obtube lo siguiente:

Private Sub Command1_Click()
Dim cadena As String
cadena = "Form1.text1 =" & Suma(2,2)

code = EbExecuteLine(StrPtr(cadena), 0&, 0&, 0)
End Sub

Como resultado obtube lo esperado:4 pero si en lugar de pre-escribir la linea:
cadena = "Form1.text1 =" & Suma(2,2)

Escribo:
cadena = "Form1.text1 =" & txtformula

Esta no me devuelve resultados, creo que si consigo evitar el tener que pre-escribir las funciones y sus parametros solucionaria el problema con todo esto, entonces por que no puedo hacer referencia a la funcion directamente desde txtformula?, gracias nuevamente.-
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