Foros del Web » Programando para Internet » ASP Clásico »

Método execute

Estas en el tema de Método execute en el foro de ASP Clásico en Foros del Web. Buenos días, Espero que me podais ayudar con la intrucción execute. El tema es el siguiente: Tengo unas variables declaradas y cuyo valor es asignado ...
  #1 (permalink)  
Antiguo 29/03/2005, 05:13
 
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 20 años, 2 meses
Puntos: 0
Método execute

Buenos días,

Espero que me podais ayudar con la intrucción execute. El tema es el siguiente:
Tengo unas variables declaradas y cuyo valor es asignado con el método execute:


for each edad in edades_hijos
if not IsNull(rs_tar_pre_vida("ORFANDAD_" & edad).value) then
execute("dim " & "tarifa_orfp_" & edad)
execute("tarifa_orfp_" & edad & " = FormatNumber(rs_tar_pre_vida(""ORFANDAD_" & edad & """).value, 3, -1)")
execute("if inStr(tarifa_orfp_" & edad & ", "","") then tarifa_orfp_" & edad & " = replace(tarifa_orfp_" & edad & ", "","", ""."")")
else
execute("tarifa_orfp_" & edad & " = 0")
end if
next


Luego estas variables las tengo que sumar en otra global y la instruccion que ejecuto es la siguiente:

execute("tarifa_orfp = tarifa_orfp + tarifa_orfp_ & " & edad & "")

No me realiza correctamente la suma, por favor, ¿algún comentario que me pueda ayudar?.

Gracias a todos.Ciao.
  #2 (permalink)  
Antiguo 29/03/2005, 06:05
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
De acuerdo

Interesantisimo

No conocia esta INSTRUCCION.

y por lo que veo permite poder crear codigo asp dinamicamente... muy util

por ejemplo

Código:
execute("prueba = ""hola mundo""")
Response.Write prueba
arrojara en pantalla hola mundo

util no ?


Bueno... checando y checando me di cuenta de que hay algo raro en tu codigo que podria estar no bien

Tu haces un execute asi

execute("tarifa_orfp = tarifa_orfp + tarifa_orfp_ & " & edad & "")


donde me tinca que deberia hacerlo asi


execute("tarifa_orfp = tarifa_orfp + tarifa_orfp_" & edad & "")

Checalo y nos cuentas
  #3 (permalink)  
Antiguo 29/03/2005, 06:15
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
ah.... para el que quiera aprender

Instrucción Execute
Ejecuta una o varias instrucciones especificadas.

Execute instrucción

El argumento requerido instrucción es una expresión de cadena que contiene una o más instrucciones para ejecutar. Incluye múltiples instrucciones en el argumento instrucción, mediante el uso de dos puntos (:) o saltos de línea incrustados para separarlas.

Comentarios
En VBScript, x = y se puede interpretar de dos formas. La primera es una instrucción de asignación, donde el valor de y se asigna a x. La segunda interpretación es como una expresión que comprueba si x y y tienen el mismo valor. Si es así, el resultado es True; si no, el resultado es False. La instrucción Execute utiliza siempre la primera interpretación, mientras que el método Eval utiliza siempre la segunda.

Nota En Microsoft® JScript™, no existe confusión entre asignación y comparación, porque el operador de asignación (=) es diferente del operador de comparación (==).

El contexto en el que se invoca la instrucción Execute determina qué objetos y variables están disponibles para el código que se ejecuta. Los objetos y variables dentro del ámbito están disponibles para codificarse en una instrucción Execute. Sin embargo, es importante entender que si ejecuta un código que crea un procedimiento, dicho procedimiento no hereda el ámbito del procedimiento en que apareció.

Al igual que cualquier procedimiento, el ámbito del procedimiento nuevo es global y hereda todo en el ámbito global. A diferencia de cualquier otro procedimiento, su contexto no es de ámbito global, de modo que sólo se puede ejecutar en el contexto del procedimiento donde apareció la instrucción Execute. Sin embargo, si la misma instrucción Execute se invoca fuera de un procedimiento (es decir, ámbito global), no sólo hereda todo en el ámbito global, sino que también puede llamarse desde cualquier lugar, ya que su contexto es global. El siguiente ejemplo ilustra este comportamiento:

Dim X ' Declara X en el ámbito global.
X = "Global" ' Asigna un valor a X global.
Sub Proc1 ' Declara el procedimiento.
Dim X ' Declara X en el ámbito local.
X = "Local" ' Asigna un valor a X local.
' La instrucción Execute aquí crea un
' procedimiento que, cuando se invoca, imprime X.
' Imprime X global porque Proc2
' hereda todo en el ámbito local.
Execute "Sub Proc2: Print X: End Sub"
Print Eval("X") ' Imprime X local.
Proc2 ' Invoca a Proc2 en el ámbito de Proc1.
End Sub
Proc2 ' Esta línea produce un error ya que
' Proc2 no está disponible fuera de Proc1.
Proc1 ' Invoca a Proc1.
Execute "Sub Proc2: Print X: End Sub"
Proc2 ' Esta invocación se realizó correctamente porque Proc2
' está ahora disponible globalmente.
El siguiente ejemplo muestra cómo se puede volver a escribir la instrucción Execute de manera que no tenga que delimitar todo el procedimiento entre comillas:

S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
Execute S
  #4 (permalink)  
Antiguo 29/03/2005, 09:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola Muzztein, he probado lo que me has dicho:

execute("tarifa_orfp = tarifa_orfp + tarifa_orfp_" & edad & "")

No realiza la suma bien. El resultado de imprimir el valor de la variable es 316 cuando deberia ser 0,316 (0,170 + 0,146). El tipo de la variable es doble y en teoría debería realizar correctamente la suma de ambos números, pero no lo hace. Se me escapa algún pequeño detalle que me está jodiendo.

Un saludo amigo.
  #5 (permalink)  
Antiguo 29/03/2005, 10:12
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
mnmnmnmnmmnmnmnmn puede ser que el 0,170 lo este tomando como 170 por

prueba esto

x = "0,1"
y = "0,2"

response.write x + y

response.write cdbl(x) + cdbl(y)


y luego comparalo con esto


x = 0.1
y = 0.2

response.write x + y
  #6 (permalink)  
Antiguo 30/03/2005, 02:34
 
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 20 años, 2 meses
Puntos: 0
La primera prueba realiza la concatenacion de los dos strings, devuelve 0,10,2

La segunda prueba lo hace correctamente, devuelve 0.3

Sigo investigando a ver si lo soluciono. Ya te comentaré como quedo.

Gracias.
  #7 (permalink)  
Antiguo 30/03/2005, 03:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 20 años, 2 meses
Puntos: 0
Ya lo he resuelto Muzztein.

Al sacar los datos de la base de datos salen como un números, el problema es que estos números han de ser tratados por funciones javascript entonces tengo que convertirlos al subtipo String para hacer uso de la función "inStr" y "replace" (de VBScript) para sustituir cualquier "," por "." y posteriormente en las funciones javascript transformarlos con la función "parseFloat".

Muchas garcias por tu ayuda, me ha servido mucho.
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 04:29.