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

Duda en bucle "For" con variables..

Estas en el tema de Duda en bucle "For" con variables.. en el foro de ASP Clásico en Foros del Web. Hola a todos: Veo que el foro está bastante activo y eso me gusta!! Así que me vereis unos cuantos dias por aqui... espero que ...
  #1 (permalink)  
Antiguo 15/11/2007, 12:08
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Pregunta Duda en bucle "For" con variables..

Hola a todos:

Veo que el foro está bastante activo y eso me gusta!! Así que me vereis unos cuantos dias por aqui... espero que tengasi consideración que soy novatillo eh!! jejeje

Bueno, pues mi primera "historia" es que estoy con un blucle en un código y quiero aprovechar dos variables... a ver si logro explicarme... el bucle es este:

Dim i
For i=1 to 70 step 1
strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '" & f1 & "')"
Conn.Execute(strSQL)
next


Lo que marco en grande y negrita es lo que quiero añadir al bucle... es decir, en lugar de que ponga "f1" que pueda ir aumentando con el bucle "fi", vamos, que a cada paso el valor de la variable sea "f1" "f2" "f3" etc..

En SQL sé que sería algo así como "f" & i pero.... y en ASP?

Graciaaaaaaaaas
Juan Carlos

P.D. Sé que no me he explicado muy bien, pero espero sepais entender lo que necesito hacer..
  #2 (permalink)  
Antiguo 15/11/2007, 13:25
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años, 6 meses
Puntos: 8
Re: Duda en bucle "For" con variables..

Que tal majete.

Lo que dices:
Cita:
En SQL sé que sería algo así como "f" & i pero.... y en ASP?
Funciona para ASP, pero no para SQL Server, el cual sería así:

Código:
"f" +  CAST( i  as varchar(3))
Saludos!!
  #3 (permalink)  
Antiguo 15/11/2007, 14:43
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Duda en bucle "For" con variables..

y si lo que buscas es que se ejecute la sentencia a conforme cambia el contador i, solo debes ponerlo asi
Cita:
Dim i
For i=1 to 70 step 1
strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', 'f" & i & "')"
Conn.Execute(strSQL)
next
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #4 (permalink)  
Antiguo 16/11/2007, 03:55
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
y si lo que buscas es que se ejecute la sentencia a conforme cambia el contador i, solo debes ponerlo asi


tú lo has dicho Shiryu Libra... eso es lo que necesito... voy a probarlo ahora mismito!! gracias!!
JC
  #5 (permalink)  
Antiguo 16/11/2007, 04:14
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Posssss parece que no funciona.... si lo pongo sin el bucle... es decir, si hago sólo una linea con la variable puesta tal que así funciona:

'" & f1 & "'

Debe ser algo del bucle For... vo a seguir haciendo pruebas pero se agradece una ayudita
Gracias!
JC
  #6 (permalink)  
Antiguo 16/11/2007, 04:19
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

una nota a añadir que no sé si tiene que ver algo...
en dreamweaver me marca en rojo los valores a los que inicializo la variable... es decir me lo marca así

For i=1 to 70 step 1

da la sensación de que esté marcando un error... pero no sé si es así...
¿?¿?¿??¿
  #7 (permalink)  
Antiguo 16/11/2007, 08:17
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
Re: Duda en bucle "For" con variables..

Eso debe ser por que haz de tener configurado el DW para que ponga en rojo las constantes numéricas.

Lo que Shiryu_Libra de puso es correcto, para insertar 70 registros por medio de un ciclo eso funciona (claro que no veo por ningún lado el supuesto valor de fid, pero en fin).

fid ="Debe valor algo, supongo"
For i=1 to 70
strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', 'f" & i & "')"
Conn.Execute(strSQL)
next

¿por qué dices que no funciona?
Igual y podrías poner el resultado de la consulta para constatar que se formó bien la instrucción:

...
Response.Write strSQL & "<br>"
'Conn.Execute(strSQL)
Next
  #8 (permalink)  
Antiguo 16/11/2007, 09:39
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Ok.. Gracias Myakire... he probado de imprimir la cadena y me aparece esto..

INSERT INTO TablaNotas (id, item, nota) VALUES ('tete', '1', 'f1')
INSERT INTO TablaNotas (id, item, nota) VALUES ('tete', '2', 'f2')
...

es decir, como tu decías SÍ que funciona bien... pero no me coje la variable f1 con su valor, sino que me pone directamente f1,f2, etc...

las variables las recojo del formulario y les asigno una variable (que no sé si será correcto)

f1=request.form("1")
f2=request.form("2")
etc..

¿Cómo hago para que me coja la variable y no el texto?
Un saludo
JC
  #9 (permalink)  
Antiguo 16/11/2007, 14:06
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Duda en bucle "For" con variables..

las variables f1, f2, son las mismas, para que me entiendas, son los unicos 2 valores que recibira o f1, f2 siempre cambiara de valor en cada vuelta, en caso de que se siempre ese valor

Cita:
fid ="Debe valor algo, supongo"
For i=1 to 70
strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& f & i & "')"
Conn.Execute(strSQL)
next
ahora el item, sera el contador???, o tambien tienes un valor que agregarle ahi???

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 16/11/2007, 14:30
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
Re: Duda en bucle "For" con variables..

Cita:
las variables las recojo del formulario y les asigno una variable (que no sé si será correcto)

f1=request.form("1")
f2=request.form("2")
Entonces más bien será algo como esto:

Cita:
fid ="Debe valor algo, supongo"
For i=1 to 70
strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& request.form(i) & "')"
Conn.Execute(strSQL)
next
Vaya con esta adivinanza !, verdad Shiryu_Libra
  #11 (permalink)  
Antiguo 16/11/2007, 15:13
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Duda en bucle "For" con variables..

definitivamente Sensei, haber cual era la opcion al final Saludos Master
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 19/11/2007, 05:02
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Bueno chicos... primero de todo gracias por la ayuda dedicada a mi problemilla... entonces:

Cita:
Iniciado por Shiryu_Libra Ver Mensaje

ahora el item, sera el contador???, o tambien tienes un valor que agregarle ahi???

El valor que va a tomar "i" es el contador... entonces necesito que me aparezca como valor "item" sin añadir nada más, es decir que coja los valores 1, 2, 3, etc... y por otra parte que se combine con la "f" para que el valor de la variable sea "f1,f2,f3.." y ahí está el problema...
Si pruebo con lo que me has pasado:

strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& f & i & "')"

la "f" se la pasa por alto y el resultado que obtengo es "1,2,3 etc.." como si sólo estuviera con la variable... quizás el problema es la colocación de la f.. pero yo creo que he probado todas las combinaciones! no se...


La solución que me da Myakire me solucionaría además el tener un listado de 70 lineas! o sea GENIAL! peeeero en este caso si pongo así la linea

strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& request.form(i) & "')"

El resultado es:

INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '1', 'Hernando Povedano, Juan Carlos')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '2', '45ty')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '3', 'Colega')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '4', '9')


Es decir, que me coje el orden de los elementos del formulario no el valor del campo 1,2,3.. buff... un poco lio verdad?

Bueno, yo creo que ya estamos casi a punto de dar con la clave... los "name" que les he metido a los diferentes campos son: Nombre, id, relación,1,2,3,4... etc hasta 70... y con el '"& request.form(i) & "' me coge nombre como 1, id como 2, relación como 3 etc... QUE LIO!!

¿Cómo puedo cambiar eso?
Gracias por la ayuda de verdad
JC
  #13 (permalink)  
Antiguo 19/11/2007, 08:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 4 meses
Puntos: 126
Re: Duda en bucle "For" con variables..

¿Has pensado en renombrar los campos del form, como 1,2,3,4,5,6, etc, así hasta el 70?

De esta forma


strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& request.form(i) & "')"

Creo que funcionaría

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 19/11/2007, 10:12
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
Re: Duda en bucle "For" con variables..

Cita:
La solución que me da Myakire me solucionaría además el tener un listado de 70 lineas! o sea GENIAL! peeeero en este caso si pongo así la linea

strSQL="INSERT INTO TablaNotas (id, item, nota) VALUES ('" & fid & "', '" & i & "', '"& request.form(i) & "')"

El resultado es:

INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '1', 'Hernando Povedano, Juan Carlos')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '2', '45ty')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '3', 'Colega')
INSERT INTO TablaNotas (id, item, nota) VALUES ('45ty', '4', '9')

Es decir, que me coje el orden de los elementos del formulario no el valor del campo 1,2,3.. buff... un poco lio verdad?
Creo que o no te has dado a entender o no se .... pero creo en este punto que lo que tu problema es (a ver si ahora si le atino):

Tienes un formulario con 70 controles (solo por decir) y quieres meternos en un registro con 70 campos. Los controles se llaman f1, f2, f3, etc y los campos se llaman 1,2,3 etc ¿esto es cierto?, si es cierto aparte de darte un zape por esa estructura, creo que puedo darte este código:


strSQL1 ="INSERT INTO TablaNotas (id, item, "
strSQL2 = " VALUES ('" & fid & "', "
FOR i=1 to 70
strSQL1 = strSQL1 & CSTR(i) & ", "
strSQL2 = strSQL2 & "'" & request.form(i) & "', "
NEXT
strSQL1 = LEFT(strSQL1, LEN(strSQL1)-2
strSQL2 = LEFT(strSQL2, LEN(strSQL2)-2
strSQL1 = strSQL1 & ") "
strSQL2 = strSQL2 & ") "
strSQL = strSQL1 & strSQL2

Dinos si ahora si he entendido lo que en verdad quieres o sigo celebrando este puente
  #15 (permalink)  
Antiguo 20/11/2007, 10:06
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Cita:
Iniciado por Myakire Ver Mensaje
Creo que o no te has dado a entender o no se .... pero creo en este punto que lo que tu problema es (a ver si ahora si le atino):

Tienes un formulario con 70 controles (solo por decir) y quieres meternos en un registro con 70 campos. Los controles se llaman f1, f2, f3, etc y los campos se llaman 1,2,3 etc ¿esto es cierto?, si es cierto aparte de darte un zape por esa estructura, creo que puedo darte este código:
(..)
Dinos si ahora si he entendido lo que en verdad quieres o sigo celebrando este puente
Holas Myakire:

Más o menos sí que me has entendido... lo que no entiendo es ahora tu explicación con lo de los controles, campos etc... te explico:

- Tengo un formulario en ASP con estos campos: Nombre, Id, Relación, 1, 2, 3... hasta 70
- Necesito meter algunos de esos datos en una tabla de una BD de Access; la tabla tiene los campos: Id, Item, Nota. El "Id" está claro, el "Item" es el nombre del campo que también está claro, y ahora me falta que me ponga en el campo "Nota" el valor que contienen los campos 1,2,3,4 etc del formulario, ok?

Entonces, yo asigno una variable al campo Id ("fid"), le asigno un contador "i" que va de 1 a 70 para las notas ("i") y por último quiero que me coja el valor del campo al que corresponda la nota...

Código:
Dim i
For i=1 to 70
strSQL="INSERT INTO TablaNotas (Id, Item, Nota) VALUES ('" & fid & "', '" & i & "', '" & request.form(i) & "')"
Conn.Execute(strSQL)
Next
Este código me va bien, peeeeeeeeeero no me coje el campo "i" sino el orden "i" de los campos del formulario... como si buscara un index de todos los campos...voy a ponerte un ejemplo de lo que me da de resultados:

Campo1: Nombre = "Juan Carlos"
Campo2: Id = "test1"
Campo3: 1 = "8"
Campo4: 2 = "9"
Campo5: 3 = "10"
etc..


El resultado que me da con un response.write después de ponerle el código de arriba es:

INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","1","Juan Carlos")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","2","test1")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","3","8")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","4","9")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","5","10")


y el resultado que yo necesito es

INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","1","8")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","2","9")
INSERT INTO TablaNotas (Id, Item, Nota) VALUES ("test1","3","10")


Bueno... espero haberme explicado bien... si ya no lo conseguimos me doy por vencido y cerraré el tema, porque tampoco es para molestar a toda la gente que quiere ayudar...
La solución temporal ha sido inicializar el contado de 4 a 74 para que empiece a contar en el item 4 que es el primero que tiene un valor de Nota.

Venga, un saludo!
JC
  #16 (permalink)  
Antiguo 20/11/2007, 13:07
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
Re: Duda en bucle "For" con variables..

Mi solución propuesta era hacer UN SOLO insert donde se actualicen los 70 campos, y tu quieres hacer un insert POR CADA campo, es decir 70 de ellos.

Creo que deberías de estudiar un poco el código que te pasé y ver si hace lo que necesitas (insertar ese ID), decidir si lo hace con un insert o con 70, eso ya es tu elección.

Saludos
  #17 (permalink)  
Antiguo 21/11/2007, 05:32
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 17 años, 5 meses
Puntos: 2
Re: Duda en bucle "For" con variables..

Hola Myakire... cierto sí, ya que no se me ocurría otra forma de hacerlo...
He estudiado con detenimiento tu código y efectivamente es mucho más correcto que el que yo proponía... sólo con un INSERT... pero vamos, ya a tanto no llegaba en cuanto a conocimientos de código...

Además voy a añadir al código que me has dado un IF para saltar las preguntas que se deje en blanco en el cuestionario...
Quedaría así si no me equivoco..

strSQL1 ="INSERT INTO TablaNotas (id, item, "
strSQL2 = " VALUES ('" & fid & "', "
FOR i=1 to 70
If request.form(i)<>"" then
strSQL1 = strSQL1 & CSTR(i) & ", "
strSQL2 = strSQL2 & "'" & request.form(i) & "', "
End If
NEXT
strSQL1 = LEFT(strSQL1, LEN(strSQL1)-2
strSQL2 = LEFT(strSQL2, LEN(strSQL2)-2
strSQL1 = strSQL1 & ") "
strSQL2 = strSQL2 & ") "
strSQL = strSQL1 & strSQL2

Venga gracias!!
Juan Carlos
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:18.