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

Variable obtenidas dinamicamente en ejecución

Estas en el tema de Variable obtenidas dinamicamente en ejecución en el foro de ASP Clásico en Foros del Web. Hola a todos. Tengo la necesidad de declarar varias variables en tiempo de ejecución, los nombres de las variables son tomados de una BD, no ...
  #1 (permalink)  
Antiguo 15/11/2005, 10:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: UCI
Mensajes: 23
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta Variable obtenidas dinamicamente en ejecución

Hola a todos.

Tengo la necesidad de declarar varias variables en tiempo de ejecución, los nombres de las variables son tomados de una BD, no se como hacer esto pues a la hora de declarar una variable debe especificarse un nombre y no por ejemplo que tome el nombre de un contenido que este guardado en otra var.

Ejemplo.

Necesitaría declarar asi:

Código:
dim my(3)
my(1) = 'var1'
my(2) = 'var2'
my(3) = 'var3'

'entonces declarar posteriormente tres variables

dim my(1) 'que de alguna manera tome el nombre var1
' para despues posteriormente hacer
set my(1) =  Server.CreateObject("ADODB.Recordset")
'...
' que el recordset se llame var1, necesito crear varios recordset dinamicamente de nombres sacados de otro sitio
Hay alguna forma de hacer esto?.
Lo que necesito en realidad es algo mucho mas complejo que eso, pero el ejemplo abarca el problema que tengo.

Espero se entienda mi pregunta, cualquier cosa avisar para tratar de explicar mejor.

Gracias.
__________________
Lo que te den, cógelo!!!
  #2 (permalink)  
Antiguo 15/11/2005, 10:48
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
En las FAQ lo tienes:
http://www.forosdelweb.com/showpost....&postcount=112
  #3 (permalink)  
Antiguo 15/11/2005, 14:40
 
Fecha de Ingreso: noviembre-2003
Ubicación: UCI
Mensajes: 23
Antigüedad: 20 años, 5 meses
Puntos: 0
De acuerdo algo mas

Bueno, despues de varias horas de testeo, me ha servido mucho lo que me indicaste en als FAQS amigo 3pies, pido disculpas por o haberla revsado completamente, un día lo haré y seré de seguro mejor en ASP

Bueno, me ha servido, pero que incómodo es usar siempre el comando execute cuando te vas a referir a uunna var dinámica, ejemplo, en mi caso el código este:

Código:
Set rs_xxx = Server.CreateObject("ADODB.Recordset")
rs_xxx.ActiveConnection = MM_ucimedia_STRING
rs_xxx.Source = "SELECT *  FROM dbo.v_tv_programas_grabados  WHERE idprograma ="& temp
rs_xxx.CursorType = 0
rs_xxx.CursorLocation = 2
rs_xxx.LockType = 1
rs_xxx.Open()
cambiaría por este:
Código:
execute("Set "& temp &"="& "Server.CreateObject(""ADODB.Recordset"")")
execute(temp&".ActiveConnection = MM_ucimedia_STRING")
execute(temp&".Source = ""SELECT *  FROM dbo.v_tv_programas_grabados  WHERE idprograma = '""&temp&""'"" ")
execute(temp&".CursorType = 0")
execute(temp&".CursorLocation = 2")
execute(temp&".LockType = 1")
execute(temp&".Open()")
y este:
Código:
<%=(rs_xxx.Fields.Item("programa").Value)%>
cambia por:
Código:
<%execute("Response.Write("&rs_programas_online.Fields.Item("idprograma").Value&".Fields.Item(""programa"").Value)")%>
O sea, que cada vez que tengo qe usar la var o el objeto dinamico, tengo que armar una concatenadera y todo ese rollo.

Bueno, es algo, dificil de entender y programar pero resulta.

No habrá otra forma para referirse a esas variables dinámicas?, ejemplo el ultimo codigo que ya se refiera a la var, y no cuando la estoy declarando, escribirse asi como:
Código:
<%=(eval(rs_programas_online.Fields.Item("idprograma").Value).Fields.Item("programa").Value)%>
De tal forma que se sustituya y evalue lo que está dentro de eval por el valor y funcione la cosa.
No quiero decir que sea eval, pero pregunto si existe otra forma, se entiende mi pregunta?
Ejemplo, en el code de la FAQ es este:
Código:
for x = 0 to 10
	execute("variable_" & x & " = " & x)
next

response.write variable_0 & "<br/>"
response.write variable_1 & "<br/>"
para referirse a la var dinamicamente seria:
Código:
execute("Response.Write(variable_"&i&")")
No hay otra forma?

Gracias
__________________
Lo que te den, cógelo!!!
  #4 (permalink)  
Antiguo 15/11/2005, 14:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: México, D.F.
Mensajes: 76
Antigüedad: 20 años, 5 meses
Puntos: 0
Creo que pudiera funcionarte si las defines como variables de sesion:

Session(campo)=valor
__________________
http://www.musicgalerias.com
  #5 (permalink)  
Antiguo 16/11/2005, 14:51
 
Fecha de Ingreso: noviembre-2003
Ubicación: UCI
Mensajes: 23
Antigüedad: 20 años, 5 meses
Puntos: 0
Cita:
Iniciado por DavidMexico
Creo que pudiera funcionarte si las defines como variables de sesion:

Session(campo)=valor
????
No entendo.

Bueno, al final he terminado el trabajo, pero de verdad resulto engorrozo, ahora todo es dinámico y funciona perfectamente.

Solo me quedo una cosa que no pude hacer directamente y tuve que usar una var extra y es usar esas variables dinámicas en los ciclos y condiciones.

Tuve que hacer esto:

Código:
execute("tmp = "&rs_programas_online.Fields.Item("idprograma").Value&".EOF")
if (not tmp) then
Eso es para saber por ejemplo si la variable que tiene el nombre de lo que sale del recorset rs_programas_online.Fields.Item("idprograma").Valu e, que a su vez es un recorset, queria saber si estaba en el final de recorset, tuve que usar temp porque no podia instanciar el nombre de la var dinamica en la condicion de ninguna de las formas que probe.

Si alguien sabe, se lo agradeceria mas por una cuestión de curiosidad y optimizar el code.

Gracias.
__________________
Lo que te den, cógelo!!!
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 05:03.