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

Valores de la matriz en BD

Estas en el tema de Valores de la matriz en BD en el foro de ASP Clásico en Foros del Web. Hola, a ver, tengo un formulario con 20 checkbox, y los recojo en otra página en una matriz a(i). Ahora lo que quiero es introducir ...
  #1 (permalink)  
Antiguo 28/10/2003, 11:23
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Valores de la matriz en BD

Hola, a ver, tengo un formulario con 20 checkbox, y los recojo en otra página en una matriz a(i). Ahora lo que quiero es introducir esos datos en una base de datos, yo puse lo siguiente:
SQL="Insert into pedidos (codigo) values ('"&a(i)&"')" y aquí está el error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la instrucción INSERT INTO.

A ver si alguien me puede ayudar. Thx.
  #2 (permalink)  
Antiguo 28/10/2003, 11:43
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 9 meses
Puntos: 0
Insert into pedidos (codigo) values ('"&a(i)&"')"

esta dentro de un bucle?
  #3 (permalink)  
Antiguo 28/10/2003, 11:47
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
No estaba dentro de un bucle, pero lo leí por ahí ylo metí en un bucle, pero sigue el mismo error. Mira este es el código.
Código PHP:
for i=1 to 20
if a(i)<>0 then
SQL
="insert into pedidos-productos (código producto) values ('"&a(i)&"')"
set rs=conn.execute(SQL)
response.write "<br>Insertado: "&a(i)
end if
next 
No sé por qué falla, pero sigue fallando de la misma manera.

Es muy raro, porque he probado con otra base de datos y otros campos y sí funciona, pero es que tengo una base de datos que los campos no los puedo modificar. Pongo la tabla y los campos:
Tabla: pedidos-productos
Campos:código producto, cantidad
Lo que no sé es porque me dice que error de sintaxis en la instrucción INSERT INTO. Por favor, AYUDAAAAAA!!!!

Última edición por knarfy; 28/10/2003 a las 12:36
  #4 (permalink)  
Antiguo 28/10/2003, 12:53
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Por lo visto el error estaba en que la instrucción SQL no admite guiones normales "-" ni espacios. ¿Es eso cierto?
Porque he puesto esta instrucción:
SQL="INSERT INTO pedidos_productos (código_producto) values ('"&a(i)&"')"
y funciona.
Yo tengo que poner los nombres de los campos tal y como están, es que no puedo modificarlos, y claro, tiene guiones y espacios. Por favor, alguna solución, pleasseeee.
  #5 (permalink)  
Antiguo 28/10/2003, 12:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98

1.- El campo en tu base de datos es de tipo texto? si no es así, quítale las comillas simples "&a(i)&"
2.- Como estás generando ese array?
Toma en cuenta que cuando llega la variable del formulario en una colección, lo hace de la siguiente forma:
variable= 1, 2, 3, 4
es decir que tiene un espacio entre la coma y el siguiente elemento, que a lo mejor todo queda reducido al tipo de dato en tu campo....

Después veo otro problema pero a lo mejor así debe ser...el ciclo lo comienzas en 1, siendo que el array comienza con un índice 0, pero bueno como te decía de cualquier modo debería ingresar a la DB.

Es lo que se me ocurre de momento...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 28/10/2003, 13:07
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 20 años, 9 meses
Puntos: 0
a los valores, los tomas asi?

a_array=split(request.form("campo_form"),",")
  #7 (permalink)  
Antiguo 28/10/2003, 13:16
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Por lo visto el error estaba en que la instrucción SQL no admite guiones normales "-" ni espacios. ¿Es eso cierto?
Yo tengo que poner los nombres de los campos tal y como están, es que no puedo modificarlos, y claro, tiene guiones y espacios. Por favor, alguna solución, pleasseeee.
A quien se le ocurrió poner espacios en los campos?? je je je je

Bueno, pues seguramente ese debe ser tu problema, trataste de hacer un query directo a ese campo solo para comprobar tu teoría?

Por qué no puedes modificarlos? si tienes los permisos suficientes al momento de abrir tu DB, a lo mejor puedes utilizar otras instrucciones para alterar los campos o eliminarlos y crear otros con nombres permisibles por SQL...utilliza la instrucción ALTER TABLE para este propósito.

http://www.asptutor.com/sql/sql11.asp#11.4

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 28/10/2003, 14:19
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Gracias a todos por ayudarme pero el problema es más.
DADU el problema de los espacios es de los campos y nombres de la tabla de la BD no de las variables. Gracias por intentarlo, xD.
El problema de no poder modificar los campos de la tabla, o de la base de datos entera, viene porque esa base de datos me la dan echa y no se puede modificar debido a que una vez que se actualize en el servidor y cuando el usuario (el administrador del sitio que estoy creando) quiera, copiará los datos de la tabla del servidor a una que tiene en su ordenador, y la que tiene en su ordenador no se le pueden cambiar los nombres de los campos ni de las tablas, ya que lleva formularios, consultas, y tablas y campos relacionados.
Entonces, lo que yo tengo que hacer es, en una bd en el servidor insertar ciertos valores, y esos valores luego se tienen que copiar en la BD del HD del administrador. Por eso es que los campos no se pueden variar de nombre.
¿No hay ninguna solución posible?

Última edición por knarfy; 28/10/2003 a las 14:21
  #9 (permalink)  
Antiguo 28/10/2003, 14:26
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
Si. Encerrar los nombres de campos y tablas que contengan "-", espacios, tildes, "eñes" y cualquier otro caracter raro entre corchetes:

SQL="insert into [pedidos-productos] ([código producto]) values ('"&a(i)&"')"
__________________
...___...
  #10 (permalink)  
Antiguo 28/10/2003, 14:34
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
dazuaga mañana lo pruebo y te comento y si funciona te doy un besito, jajajaja.
  #11 (permalink)  
Antiguo 28/10/2003, 14:34
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
:-p Pues si, es un tremendo problema...
En algún lado había visto la solución a los espacios en el nombre de los campos, sería cuestión de investigar un poco, a lo mejor si sustituyes el carcater no permitido por su equivalente en ascii dentro de la sentencia?

Nunca me he visto en ese problema por lo cual no se que mas decirte, algo así:

SQL="insert into pedidos"&chr(45)& "productos (código producto) values ('"&a(i)&"')"

Salu2,

je je, como siempre tarde...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 28/10/2003 a las 14:37
  #12 (permalink)  
Antiguo 28/10/2003, 14:44
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
u_goldman también lo probaré mañana, ya os contaré a todos. Thx.
  #13 (permalink)  
Antiguo 29/10/2003, 05:45
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Nada, no funciona. Ni con una solución ni con otra. Os pongo el código de las dos páginas que uso para ver si hay algo mal en ella. Voy a quitar lo poco importante pq me dice que el mensaje es muy largo.

--------------------------------------------------------------
pedidos2.asp
--------------------------------------------------------------
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>


<form name="form1" method="post" action="procesa_pedidos.asp">

<table width="100%" border="0" cellpadding="2">
<tr>
<input name="textfield2" type="text" class="campo">
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk1" value="1400">
</label>
Varios sabores</font></td>
<td width="21%" height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input name="textfield3" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
</label>
</font></td>
<td width="23%"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk2" value="1401">
At&uacute;n </label>
</font></td>

</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk3" value="1402">
At&uacute;n con tomate </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk4" value="1403">
Cangrejo </label>
</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk5" value="1404">
Cocktail de cangrejo </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield33" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk6" value="1405">
Chorizo </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield313" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk7" value="1406">
Dog Bacon</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield34" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk8" value="1407">
Ensaladilla</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield314" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk9" value="1408">
Sobrasada </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield35" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk10" value="1409">
Integral de pavo</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield315" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk11" value="1410">
Mixto </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield36" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk12" value="1414">
Salami
</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield316" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk13" value="1415">
Tortilla </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield37" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk14" value="1416">
Vegetal con at&uacute;n</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield317" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk15" value="1417">
Pat&eacute; </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield38" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input name="chk16" type="checkbox" id="chk16" value="1420">
Roquefort
</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield318" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input name="chk17" type="checkbox" id="chk17" value="1421">
Salm&oacute;n </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield39" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input name="chk18" type="checkbox" id="chk18" value="1422">
Queso con nueces
</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield319" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">
&nbsp;</font></td>
</tr>
<tr>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input name="chk19" type="checkbox" id="chk19" value="1423">
Pollo Trufado </label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield310" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<label>
<input type="checkbox" name="chk20" value="1424">
Pavo rosa
</label>
</font></td>
<td height="23"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
<input name="textfield320" type="text" class="campo" size="15" maxlength="15" value="0" dir="rtl">&nbsp;
</font></td>
</tr>
<tr>
<td height="23"><label>
<input type="submit" name="Submit" value="Enviar">
</label></td>
<td height="23" colspan="2">&nbsp;</td>
<td height="23">&nbsp;</td>
</tr>
</table>

</form>


----------------------------------------------------
procesa_pedidos.asp
----------------------------------------------------
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
set rs=Server.CreateObject("ADODB.Recordset")
set conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("\databases\db1.mdb")
dim a(20)

for i=1 to 20
a(i)=request.form("chk"&i)
if a(i)="" then
a(i)=0
end if
next

for i=1 to 20
if a(i)<>0 then
SQL="INSERT INTO [pedidos productos] [(código producto)] values ('"&a(i)&"')"
set rs=conn.execute(SQL)
response.write "<br>Insertado: "&a(i)
end if
next


%>

A ver si alguien me puede decir que falla y que no falla porque necesito hacer eso, es muy urgente e importante para mí. Gracias a todos.

Última edición por knarfy; 29/10/2003 a las 05:46
  #14 (permalink)  
Antiguo 29/10/2003, 09:06
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Joder funciona, la respuesta de dazuaga era la buena, lo que pasa es que puse mal los corchetes, jejeje. Gracias Dios míos, Gracias fOroooooo, Gracias a todos.
  #15 (permalink)  
Antiguo 29/10/2003, 11:17
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
Cita:
Mensaje Original por knarfy
dazuaga mañana lo pruebo y te comento y si funciona te doy un besito, jajajaja.

Frank, soy "nene".
Si querés, me invitás una birrita y asunto solucionado
  #16 (permalink)  
Antiguo 30/10/2003, 07:45
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Bueno pues te invito a unas birritas, jejeje. Gracias.
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 21:37.