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

recuperar valor de variable local

Estas en el tema de recuperar valor de variable local en el foro de ASP Clásico en Foros del Web. Reintento mi pregunta: Si declaro una variable a nivel global: <% `Cabezera página asp Dim variable %> luego programo una función Sub: <% Sub mifunción ...
  #1 (permalink)  
Antiguo 12/01/2005, 09:56
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
recuperar valor de variable local

Reintento mi pregunta:

Si declaro una variable a nivel global:

<%
`Cabezera página asp
Dim variable

%>
luego programo una función Sub:

<%
Sub mifunción
XXXXcódigo
XXXXcódigo
XXXXExtraigo un registro de una base de datos y le doy el valor de mi variable:

variable= resutado.recordest
end sub
%>
Entiendo que si he declarado la variable a nivel global, aunque recoga su valor en una función local, al intentar recuperar este valor desde fuera de la función debería de entregarmelo, pero no lo hace...

¿?
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #2 (permalink)  
Antiguo 12/01/2005, 10:12
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 22 años, 6 meses
Puntos: 0
Pon el codigo real porfa haber si veos el error de ahí...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #3 (permalink)  
Antiguo 12/01/2005, 10:42
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Código
<%
Dim variable

Sub insertar_registro
sql_insert = "INSERT INTO fotos" (foto values 'foto1')"
cn.Execute(sql_insert)

set rs = cn.Execute("SELECT @@IDENTITY")
Id_foto = rs(0)
rs.Close
variable = Id_foto
end sub
variable = variable
%>
Si recogo el valor de variable dentro del Sub, me lo dá correcto, pero si lo recogo fuera del sub no me dá valor, variable me aparece como si no existiera esa variable, es como si la variable la hubiera definido en local, pero esta definida a nivel global ¿?
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #4 (permalink)  
Antiguo 12/01/2005, 11:03
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 22 años, 6 meses
Puntos: 0
mmmm, la verdad es que yo no lo trabajo así pero tratare de hacer algo, me imagino que ese cn.execute("select...@@

esta diciendo "select INTO fotos" (foto values 'foto1')"

o me equivoco????


si asi fuese... habria que modificarlo.

pues asi jamas te va dar el valor de la id que estas buscando...

para mi la consulta entre muchas posibilidades... podria ser

"Select top 1 + from fotos order by id_foro desc"

entonces tienes el ultimo id que acabas de ingresar...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #5 (permalink)  
Antiguo 12/01/2005, 11:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno, realmente el resultado es el mismo, el
set rs = cn.Execute("SELECT @@IDENTITY")
arroja lo mismo que el
"Select top 1 + from fotos order by id_foro desc"


El problema no es ese. El problema es que la variable: "variable" arroja correctamente el valor dentro del Sub, pero no arroja nada fuera de él.
Por ejemplo si a la variable :"variable" le doy un valor fijo dentro del Sub:

variable ="1"

cuando trato de recuperarlo desde fuera del sub no me dá resultado, sigue reconociendo esta variable como local, por más que la declaro como global, al anteponerla un Dim variable fuera del Sub...

Es para volverse loco...
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #6 (permalink)  
Antiguo 12/01/2005, 11:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Programación básica: "Ámbito de las variables": El alcance de las variables esta definido por su ámbito ..... se definen en globales y locales ..... etc, etc.

Con una función en lugar de un procedimiento se arregla:
Código:
Function insertar_registro
sql_insert = "INSERT INTO fotos" (foto values 'foto1')"
cn.Execute(sql_insert)

set rs = cn.Execute("SELECT @@IDENTITY")
Id_foto = rs(0)
rs.Close
insertar_registro = Id_foto
end Function
variable = insertar_registro

Última edición por Myakire; 12/01/2005 a las 11:49
  #7 (permalink)  
Antiguo 12/01/2005, 12:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Myakire eres un cachondo!!

Si convierto el sub en function cada vez que haga un llamado al mismo, efectivamente, obtendré al valor de la variable, pero el servidor se me volverá loco insertando registros a destajo...

Tiene que ser un Sub por razones obvias, pero lo que no puedo entender es porque leches si declaro una variable como global, aunque recoga el valor en un sub, no puedo recuperarlo... Esa es mi cantareta y mi patareta...

Más que de sufrir y de sufrir...
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #8 (permalink)  
Antiguo 12/01/2005, 12:22
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 22 años, 2 meses
Puntos: 1
Yomesmo, la instrucciones dentro del procediemintos, realizan acciones, pero a (diferencia de las funciones) no devuelven ningun valor.

Mira este artículo http://soloasp.com.ar/vertexto.asp?txt=21&p=1

Saludos
  #9 (permalink)  
Antiguo 12/01/2005, 14:45
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Definitivamente hay algo que debo estar haciendo mal, lo acabo de comprobar y mi racionamiento es correcto, una variable declarada fuera de un sub, no importa que luego se asigne el valor dentro del sub, la variable sigue siendo global.

He probado algo tan sencillo como esto:

<% Dim valor

Sub mostrar
valor ="22"
end sub
mostrar
%>
<br><br>
<%= valor %>

Y me arroja como resultado "22"

Asi que debo de tener alguna otra cosa mal... lo revisaré...
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #10 (permalink)  
Antiguo 12/01/2005, 14:54
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Hasta ahorita me doy cuenta de el post alcance de variables también es tuyo,
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 12:52.