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

alcance de variables

Estas en el tema de alcance de variables en el foro de ASP Clásico en Foros del Web. Regüenas, una duda: Estoy declarando una variable al inicio de una página, algo así: Dim variable_que_me_toca_los_huevos Posteriormente, el valor de esa variable lo declaro en ...
  #1 (permalink)  
Antiguo 11/01/2005, 20:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Información alcance de variables

Regüenas, una duda:

Estoy declarando una variable al inicio de una página, algo así:

Dim variable_que_me_toca_los_huevos

Posteriormente, el valor de esa variable lo declaro en bajo un Sub, algo así:

Sub me_tiene_frito
variable_que_me_toca_los_huevos ="Y ya mismo tiro al PC"
end sub

Obviamente el valor de la variable lo recogo de un registro de un llamado a una BD y dentro del Sub hay mucho más código que no viene al caso.

La pregunta es:
¿Si declaro una variable en el inicio, independientemente de que luego su valor lo recoga en un Sub, no debería de tener alcance para toda la página?

Lo digo porque luego cuando trato de recuperar este valor desde fuera del Sub me dice que me la machaque con un martillo...

¿Estoy confundido con el alcance las variables o será alguna otra cosa que tenga mal escrita?
Thanks
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #2 (permalink)  
Antiguo 12/01/2005, 06:49
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
¿Nadie me puede ayudar? Lo agradeceré con cerveza virtual y cita con mi hermana...
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #3 (permalink)  
Antiguo 12/01/2005, 14:05
 
Fecha de Ingreso: diciembre-2004
Ubicación: Bs. As. - Argentina
Mensajes: 200
Antigüedad: 20 años, 5 meses
Puntos: 0
yo creo que debería funcionar, pero si los has probado, no hay mucho ams para discutir.
no te sirve hacer una function y que te lo devuelva?
Si no puedes contra ellos, úneteles!
__________________
Javo.
www.thesitewatcher.com
Monitoreo y Auditoría de Sitios de Internet
  #4 (permalink)  
Antiguo 12/01/2005, 14:15
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
MMmhhhhh...no lo se, me parece que por estructura, no debería de alterar el contenido de la variable dentro de dicha Sub, a menos que fuera, una variable de sesión o un arreglo
De todas maneras, estructuralmente no me parece una solución óptima, para qué llamar a una Sub para alterar el contenido de una variable global?

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 12/01/2005, 14:19
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
Ya son dos post con el mismo problema, pero igual que en el otro, no es cosa del VBscript:

Código:
<%
Dim vGlobal
Response.Write "<br>Antes de la funcion: " & vGlobal
call MiSuperNecesarioProcedimiento
Sub MiSuperNecesarioProcedimiento
		vGlobal = 15
    Response.Write "<br>Dentro de la funcion: " & vGlobal
End Sub
Response.Write "<br>Saliendo de la funcion: " & vGlobal
%>
Tiene como resultado:
Cita:
Antes de la funcion:
Dentro de la funcion: 15
Saliendo de la funcion: 15
Y al igual que en el otro post, quizá convenga usar funciones u otra cosa, pero de que funciona, funciona.
  #6 (permalink)  
Antiguo 12/01/2005, 14:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
No me contradiga master Myak!

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 12/01/2005, 14:49
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
, nunca en la vida estimado U_G, pero es que ya me tiene intrigado que dos personas esten batallando con algo que por "escencia" misma de la programación, no debería se causar problemas: El ámbito de las variables.


Una variable local tiene de ámbito o vida, desde el Sub/Function hasta el End Sub/Function, una Global, pues todo el programa. VBScript, a diferencia de otros lenguajes, no permite definir ambitos distintos a programa, procedimientos y funciones (claro, salvo las variables de aplicación y sesión, pero son cosa aparte).

¿o no estás de acuerdo?

Saludos U_G
  #8 (permalink)  
Antiguo 12/01/2005, 15:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Quizás ando lento este día, estoy de acuerdo en que en "escencia" no debería surgir esta duda, pero me queda claro que, de hecho no debería ser una duda, que es lo que estaba tratando de explicar en mi segunda intervención en este post, se supone que una de las idea de la programación estructurada es la reutilización de código en distintos procesos de un programa, al definir una variable global y llamar a una Sub para modificar su valor y finalmente ejecutar otro proceso con dicho valor, le estás quitando el sentido de tener una Sub...hazlo todo de manera local y listo, te evitas de problemas, repito, quizás no he comprendido el espectro de esto, pero me confunde un poco y se me hace al menos una técnica dudosa, con todo respeto para yomesmo por supuesto.

Solo mis $0.02
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 12/01/2005, 15:14
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
amén

  #10 (permalink)  
Antiguo 12/01/2005, 15:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 21 años, 5 meses
Puntos: 1
Bueno, ya lo he resuelto, aprovecho para agradeceros a todos...

Respondiendo a u_goldman:

Imaginate que en un solo fichero tengo diferentes tareas a realizar, desde insertar registros, actualizar o eliminar dichos registros. Además en la misma página tengo el formulario que hace todo esto, y que muestra los botones de enviar-actualizar o eliminar según el caso. Por estas razones, todas las tareas contra la base de datos las pongo a cada una de ellas bajo un Sub y según proceda, llamo a una u otra...

Además, cuando inserto un registro, tambien traigo del formulario una imágen, esta imágen pretendo renombrarla con el ID del registro, para que su posterior tratamiento sea más sencillo (todo en una sola página y con un solo formulario, odio que para hacer lo más simple, haya que acometerlo en 2 o 3 pasos). El problema era que al obtener el ID del registro añadido para trasladarlo como variable al programa que sube las imágenes y a la vez las renombra no me la reconocía fuera del Sub, esto no tenía lógica, ya que si yo declaro una variable en global, me dá exactamente igual el valor que luego le reasigne en una función o procedimiento, la variable tiene que seguir siendo global.... y eso era lo que me estaba volviendo loco....
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #11 (permalink)  
Antiguo 12/01/2005, 15:23
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
Bueno, si emplementas una clase en un mismo fichero haces lo mismo, pero más estructurado. Pero la lógica de cada quien es la que funciona, lo bueno es que ya lo resolviste.

Suerte
  #12 (permalink)  
Antiguo 12/01/2005, 15:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Bueno, pero otra vez, que tal una función que te devuelva el valor de ese registro y lo pasas como argumento a cualquier Sub o Function que necesite de este mismo y se acabó el problema...
De cualquier manera lo importante es que funcione

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 11:32.