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

Crear variables dinamicamente

Estas en el tema de Crear variables dinamicamente en el foro de ASP Clásico en Foros del Web. De esta forma imprimo los distintos valores de i: <% n=10 For i=0 to n%> <%=i%> <%Next%> ¿Podria crear dinamicamente variables para asignarles los valores ...
  #1 (permalink)  
Antiguo 25/05/2005, 15:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Crear variables dinamicamente

De esta forma imprimo los distintos valores de i:

<%
n=10
For i=0 to n%>
<%=i%>
<%Next%>

¿Podria crear dinamicamente variables para asignarles los valores de i?
  #2 (permalink)  
Antiguo 25/05/2005, 15:33
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

A que te refieres ?

Si quieres valores dinamicos, usa las funciones:

Randomize y Rnd

Facilmente encontraras un ejemplo de como usarlas.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #3 (permalink)  
Antiguo 25/05/2005, 15:50
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Supongo que te refieres a algo así:

Código:
For i = 0 to x
  Dim "var"&i
Next
Niños, no imiten esto no se puede, pero sin duda debe haber una solucion, porque no nos cuentas un poco mas que es lo que necesitas exactamente hacer?
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 25/05/2005, 15:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Podrias generar un array dinamicamente y a cada indice le asignas el valor de i, no se si es esto lo que buscas, pero sería algo así:

Dim arreglo(10)

For i=0 to UBound(arreglo)

arreglo(i) = i

next
  #5 (permalink)  
Antiguo 25/05/2005, 15:55
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Humm...

Tal vez lo que te pasa es que quieres tener guardados todos los valores que generas y no sabes como hacerlo?? bueno, algo podria ser como:

Dim arrVar

'CODIGO
'CODIGO
'CODIGO

n=10

Redim arrVar(n)

For i=0 to n

arrVar(i) = i
Response.write i

Next
%>

Ese seria un metodo, si eso es lo que pretendes.

__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #6 (permalink)  
Antiguo 26/05/2005, 06:10
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
De acuerdo

Cita:
Iniciado por sqa212
De esta forma imprimo los distintos valores de i:

<%
n=10
For i=0 to n%>
<%=i%>
<%Next%>

¿Podria crear dinamicamente variables para asignarles los valores de i?


Checad esto ustedes deben:

Código:
for x = 0 to 10
	execute("variable_" & x & " = " & x)
next

response.write variable_0 & "<br/>"
response.write variable_1 & "<br/>"
response.write variable_2 & "<br/>"
response.write variable_3 & "<br/>"
response.write variable_4 & "<br/>"
response.write variable_5 & "<br/>"
response.write variable_6 & "<br/>"
response.write variable_7 & "<br/>"
response.write variable_8 & "<br/>"
response.write variable_9 & "<br/>"

ejem,ejem,ejem
  #7 (permalink)  
Antiguo 26/05/2005, 10:40
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
u_goldman, aunque quizas te rias de mi llege incluso a probar lo que sugeristes:

For i = 0 to x
Dim "var"&i
Next

Queria hacer exactamente lo que decia mariano_donati generar un array dinamicamente, junto con lo que me sugeririo Neuron_376, usar Redim arrVar(n).

No puse todo el codigo porque intente delimitar el problema, pero parece que he habido una especie
de telepatia cibernetica o algo asi, porque casi averiguais todo sin deciros practicamente nada.

Muzztein, acabo de ver tu mensaje, luego te comento cuando lo pruebe.
Os comento lo que pretendo:

Hay dos archivos: tablasenbd.asp y recogedebd.asp

tablasenbd.asp muestra todas las tablas y campos de la base de datos,confecionando con dichos valores
un formulario en el que se puede seleccionar las tablas y campos que van a enviarse a recogedebd.asp.

recogedebd.asp

El objetivo de este archivo es crear una matrix bidimensional,la primera dimension estara formada por
las columnas de la base de datos que intervienen y la segunda dimension estara formada por
las tablas de la base de datos que intervienen.
Por lo que pienso que deeberia ser matrixbidimensional(tablas que intervienen -1, Numero maximo de columnas que intervienen de una misma tabla -1)
Como dijo u_goldman, Niños, no imiten esto.
Una vez creada la matrixbidimensional, se introducirian en ella sus valores correspondientes.


Finalmente una vez que consiga lo anterior lo que pretendo es generar "EL CODIGO" necesario
para crear "LA SINTEXIS" de formularios,"LA SINTEXIS" de consultas SQl (tanto de Select como de update cuando solo se ha selecionado una tabla),
"LA SINTEXIS" de consultas SQl (de Select cuando se selecionen dos tablas con un campo en comun) tipo:
set rscoleccion=db.Execute("SELECT * FROM colecciones INNER JOIN objetos ON colecciones.idobjeto = objetos.idobjeto"),
etc,etc,etc
Aunque creo que necesitaria una matriz de mas de dos dimensiones, si pasase tambien el tipo de dato de que se trata junto al campo.
Como podreis ver si ejecutais el codigo, ahora mismo no estoy demasiado lejos de crear la matrixbidimensional.

A ver si se os ocurre como deberia enfocarse correctamente el asunto,os invito a que os rompais el coco un poco para ver si esto echa a andar, creo que podria resultar de gran utilidad para todos.


------------------------------------tablasenbd.asp-------------------------------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #INCLUDE File="adovbs.inc" -->
<%Function tipocampobd(strText)
Select Case LCase(strText)
Case ""
strTemp = "VACIO"
Case "3"
strTemp = "Número"
Case "202"
strTemp = "Texto"
Case "203"
strTemp = "Memo"
Case else
strTemp = "DESCONOCIDO"
End Select
tipocampobd = strTemp
End function%>
<%Dim oConn,rstSchema
Set oConn = Server.CreateObject("ADODB.Connection")
Set rstSchema = Server.createobject("ADODB.Recordset")
oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("basededatos.mdb"))
Set rstSchema = oConn.OpenSchema(adSchemaTables)
%>
<html>
<head></head>
<body>
<form method="post" action="recogedebd.asp">
<table>
<% Do Until rstSchema.EOF%>
<%Nombretablas= rstSchema("TABLE_NAME")%>
<%Tipotabla= rstSchema("TABLE_TYPE")%>
<%if Tipotabla="TABLE" then%>
<b><%=Nombretablas%>:</b>
<input type="checkbox" name="Nombretablas" value="<%=Nombretablas%>">
<hr color="#FF0000" width="600"><br>
<% set rscat=oConn.execute("select * from [" & Nombretablas& "]")%>
<%For Each campo in rscat.Fields%>

<input type="checkbox" name="<%= Nombretablas& "|" & campo.Name%>" value="<%= campo.Name%>">
<%miscampos=campo.Name%>
<B><%=miscampos%></B>&nbsp;&nbsp;
<B style="color:#FF0000"><%=tipocampobd(campo.Type) %></B>
<BR>
<%next%>
<br>
<%end if%>
<%
rstSchema.MoveNext
Loop
rstSchema.Close
oConn.Close
%>
<input type="submit">
</form>
</body>
</html>




------------------------------------recogedebd.asp-------------------------------------------------
<%@ LANGUAGE="VBSCRIPT" %>
<% Function cogenombrecol(txt,deqtabla)
tamatodo=LEN(txt)
tamatabla=LEN(deqtabla)
tamacol=tamatodo-tamatabla
txt = Mid(txt,tamatabla+2,tamacol)
nombrecol = txt
Response.write "<hr><br><FONT color=green><b>" & nombrecol & "</b></FONT>"
End function %>
<% Dim cosa
Dim cuantosvienen
'MiMatrix1 Se asigna un valor a un elemento dentro de la matrix MiMatrix1 en el que almacena el nombre de una tabla.
'MiMatrix2 Se asigna un valor a un elemento dentro de la matrix MiMatrix2 en el que almacena TABLA|COLUMNA.
Dim MiMatrix1
Dim MiMatrix2(100)
delform=""
cuantosvienen=Request.Form.count
Redim MiMatrix1(cuantosvienen)
FOR EACH cosa IN Request.Form
delform=delform & cosa & ","
Response.Write "<hr><br><FONT color=red>" + cosa + "</FONT> = " + Request.Form(cosa)
Next
Response.Write "<H2><FONT color=brown>" & cuantosvienen & "</H2>"
Response.Write "<hr>"
tamano=Len(delform)-1
delform=Left(delform,tamano)
idTablas=Split(Request.Form("Nombretablas"),",")
For i=0 to UBound(idTablas)
Response.Write (i)
Response.Write idTablas(i)& "<BR>"
MiMatrix1(i)=idTablas(i)
Response.write "<br><FONT color=orange>" & MiMatrix1(i) & "<br><br></FONT>"
Next
delform=Replace (delform, "Nombretablas,","")
id=Split(delform,",")
For i=0 to UBound(id)-1
MiMatrix2(i)=id(i)
Response.write "<br><FONT color=blue>" & MiMatrix2(i) & "</FONT>"
Response.Write "<b>" & cogenombrecol(MiMatrix2(i),MiMatrix1(0)) & "</b>"
Response.Write "<BR>"
Next
%>
  #8 (permalink)  
Antiguo 27/05/2005, 11:59
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 1 mes
Puntos: 0
Ayuda Experto

Por mas vueltas que le doy no veo la forma correcta de introducir los datos en lugar de en las dos matricez, en una matriz bidimensional.
Aun mas dificil todavia obtener una matriz tridimensional que recoja tambien el tipo de dato de que se trata.
A ver si alguno de los exspertos que hay en este foro me hecha una manita.
  #9 (permalink)  
Antiguo 27/05/2005, 12:04
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Mira, para la parte del arreglo que viene de la consulta, investiga el metodo GetRows, encontraras un ejemplo muy rapido de ese metodo y lo que necesitas para aplicarlo, ese metodo te creara un arreglo con todos tus resultados de la consulta a la base de datos.

El arreglo que tienes que llega por POST, ese dejalo fuera y solamente recorrelo por separado cuando lo necesites.

__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
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 14:05.