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

Insert usando "IN" - Ayuda

Estas en el tema de Insert usando "IN" - Ayuda en el foro de ASP Clásico en Foros del Web. Supongase que tengo el siguiente codigo: <% For i=1 to 4 <input type="text" name="<%=i%>" size="20"> next arreglo = request.form(i) //Suprimidas conexiones con una base de ...
  #1 (permalink)  
Antiguo 02/07/2002, 22:59
 
Fecha de Ingreso: abril-2002
Mensajes: 34
Antigüedad: 22 años, 2 meses
Puntos: 0
Insert usando "IN" - Ayuda

Supongase que tengo el siguiente codigo:

<%
For i=1 to 4
<input type="text" name="<%=i%>" size="20">
next
arreglo = request.form(i)

//Suprimidas conexiones con una base de datos

Ob_RS.Open "Tabla", Conn, adOpenStatic, adCmdTable
if not OB_RS.EOF then
OB_RS.MoveLast
cod = OB_RS("Codigo") + 1
else
cod = 1
end if

sql = “insert into Tabla (Codigo, Campo1) values (‘” & cod & “’, ‘” & arreglo & “’)”
Com.CommandText = sql
Com.Execute

Lo que yo quiero hacer es insertar los 4 registros que corresponderían, los cuales deberian quedar asi en la base de datos:

Codigo = 1 – Campo1 = “algo”
Codigo = 2 – Campo1 = “otra cosa”
... Y asi los 4 registros

Ahora bien, ¿esto podria implementarse con la clausula “IN” del SQL? De ser asi, ¿como seria?... y en caso que no fuera, ¿como puedo lograr los resultados que necesito? Un saludo...

  #2 (permalink)  
Antiguo 02/07/2002, 23:33
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 5 meses
Puntos: 1
Re: Insert usando "IN" - Ayuda

1.- El IN se utiliza para consultas, actualización o de borrado de registros

Y lo que puedes hace es tener 4 textboxes con EL MISMO NOMBRE

<input type="text" name="algo" size="20">

Los recoges así=

Algo=Request.Form("Algo")

Si el usuario ingreso 4 palabras la variable Algo traserá:

Algo="Hola1, Hola2, Hola3 Hola4"

Para insertar los registros partimos la cadena

Arreglo=Split(Algo,", ")

For i=0 to Ubound(Arreglo)
.
.
.
sql = “insert into Tabla (Codigo, Campo1) values (‘” & cod & “’, ‘” & arreglo(i) & “’)”
.
.
.
Next


Lo cual ira insertando primero Hola1, Hola2 y así sucesivamente.

Saludos

<center>
<p><a href=http://comunidadguru.com><img border=0 src=http://comunidadguru.com/urjose.gif></a></p>
</center>
  #3 (permalink)  
Antiguo 03/07/2002, 10:17
 
Fecha de Ingreso: abril-2002
Mensajes: 34
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: Insert usando "IN" - Ayuda

Entiendo todo perfectamente, pero tengo un par de dudas con respecto a Split. Especificamente los parametros que usas, pones algo asi: Split(Arreglo,&quot;,&quot;)... Cual es el significado de los prametros comillas que ahi ingresas? Un saludo y gracias por tu respuesta previa.
  #4 (permalink)  
Antiguo 03/07/2002, 11:10
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: Insert usando "IN" - Ayuda

No, no... las comillas no son parámetros. la funcion split tiene la siguiente estructura (reducida... no pongo la cantidad de cadenas a devolver ni el método de comparación):

Split(CADENA, DELIMITADOR)

CADENA: El texto a separar con sus delimitadores

DELIMITADOR: El/los caracters que van a servir para separar en subcadenas a &quot;CADENA&quot;

En el caso del ejemplo de urjose, el DELIMITADOR es el caracter &quot;COMA&quot; (&quot;,&quot;) y al ser un string debe ir entre comillas

saludos
  #5 (permalink)  
Antiguo 03/07/2002, 11:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: Insert usando "IN" - Ayuda

...para que lo veas màs claro:

&lt;%
Dim CADENA, DELIMITADOR, ARREGLO

CADENA = &quot;Rojo,Verde,Azul&quot;
DELIMITADOR = &quot;,&quot;

ARREGLO = Split(CADENA,DELIMITADOR)
%&gt;
  #6 (permalink)  
Antiguo 03/07/2002, 14:14
 
Fecha de Ingreso: abril-2002
Mensajes: 34
Antigüedad: 22 años, 2 meses
Puntos: 0
Re: Insert usando "IN" - Ayuda

Gracias por toda la ayuda, anda a la perfeccion, excepto en el siguiente caso:

&lt;%
For i=1 to 4
&lt;input type=&quot;checkbox&quot; name=&quot;arreglo&quot; value=&quot;ON&quot;&gt;
next
arreglo = request.form(&quot;arreglo&quot;)

//Suprimidas conexiones con una base de datos

Ob_RS.Open &quot;Tabla&quot;, Conn, adOpenStatic, adCmdTable
if not OB_RS.EOF then
OB_RS.MoveLast
cod = OB_RS(&quot;Codigo&quot;) + 1
else
cod = 1
end if

arreglo = Split(arreglo,&quot;, &quot;)

for i=0 to Ubound(arreglo)

if (arreglo(i)&lt;&gt;&quot;&quot;) then
arreglo(i) = &quot;si&quot;
else
arreglo(i) = &quot;no&quot;
end if

sql = “insert into Tabla (Codigo, Campo1) values (‘” &amp; cod &amp; “’, ‘” &amp; arreglo(i) &amp; “’)”
Com.CommandText = sql
Com.Execute
cod = cod + 1
next
OB_RS.Close

El error lo genera la linea de:
if (arreglo(i)&lt;&gt;&quot;&quot;) then
y es el siguiente:

Error de Microsoft VBScript en tiempo de ejecución error '800a0009'

El subíndice está fuera del intervalo: 'i'

Ahora bien, en el ejemplo previo yo genero 4 checkboxes... de los cuales se almacenan 3 en la base de datos... he probado corriendo el IF anterior con otro contador que esté un valor adelante de &quot;i&quot; o bien detrás&quot;, es decir, comenzando como 1 o -1 en el bucle FOR, incrementandola dentro del mismo, pero ahi me genera el mismo error en el IF con la diferencia que no guarda ni un registro en la base (es decir el bucle no pasa de la primera vuelta y ni siquiera llega a la sentencia INSERT, se muere en el IF). ¿Cómo puedo hacer para que el IF no me genere ese error usando la variable &quot;i&quot;? ¿Tengo que hacer otro bucle fuera del FOR antes de entrar en el para validar como &quot;si&quot; o &quot;no&quot; a los datos? Un saludo.

  #7 (permalink)  
Antiguo 03/07/2002, 14:27
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 5 meses
Puntos: 1
Re: Insert usando "IN" - Ayuda

Bueno este if esta de más:
if (arreglo(i)&lt;&gt;&quot;&quot;) then

Por que el arreglo siempre tendrá un valor

Si el usuario marco 3 casillas

Generará lo siguiente

Arreglo(1)=&quot;algo&quot;
Arreglo(2)=&quot;algo&quot;
Arreglo(3)=&quot;algo&quot;

Es decir para que validar algo que siempre estara lleno

Por cierto sería bueno que pusieras un response.write arreglo antes de realizarle el split para ver que valores traen los checkboxes.

Saludos



<center>
<p><a href=http://comunidadguru.com><img border=0 src=http://comunidadguru.com/urjose.gif></a></p>
</center>
  #8 (permalink)  
Antiguo 03/07/2002, 16:10
Avatar de Juansan  
Fecha de Ingreso: abril-2001
Mensajes: 203
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: Insert usando "IN" - Ayuda

perdon que me meta pero yo uso este codigo y funciona.
ok=split(request(&quot;modi&quot;),&quot;,&quot; )' la matriz
for each modi in ok

Sql = &quot; Insert into modiparada &quot;
Sql = Sql &amp; &quot;IN '&quot;&amp;Server.MapPath(&quot;\gservicios\hruta \hruta.mdb&quot;)&amp;&quot;'&quot;
sql = sql &amp; &quot; SELECT PARADA.ID, PARADA.PARADA, PARADA.FRECUENCIA, PARADA.DETENCION, PARADA.RE, PARADA.HORA, PARADA.OBS, PARADA.RECORRIDO, PARADA.TURNO,RECO.SUC&quot;
SQL = SQL &amp; &quot; FROM RECO INNER JOIN PARADA ON (RECO.TURNO = PARADA.TURNO) AND (RECO.RECORRIDO = PARADA.RECORRIDO)&quot;
sql = sql &amp; &quot; WHERE parada.id = &quot; &amp; modi &amp; &quot;&quot;
Conn.Execute Sql , registros

Se daran cuenta que vengo de una pagian anterior donde estan los checkboxes.

Ahora bien, estoy migrando esto a sql pero...
NO FUNCIONA!!!!
El problema esta en el: Sql = Sql &amp; &quot;IN '&quot;&amp;Server.MapPath(&quot;\gservicios\hruta \hruta.mdb&quot;)&amp;&quot;'&quot; dado que ahora mi conexion es
&quot;Provider=SQLOLEDB.1;Persist Security Info=False;Password=XXXXXX;User ID=XXXXXX;Initial Catalog='labase';Data Source=ELSERVER&quot; , como hago para reemplazr esto y con que??

Gracias a todos

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 02:15.