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

No Inserta En La Bd

Estas en el tema de No Inserta En La Bd en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy intentando grabar un registro en la tabla de la BD y no me lo graba. Pero tampoco me da ningún error. ...
  #1 (permalink)  
Antiguo 13/12/2002, 05:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 249
Antigüedad: 21 años, 7 meses
Puntos: 0
No Inserta En La Bd

Hola a todos, estoy intentando grabar un registro en la tabla de la BD y no me lo graba.

Pero tampoco me da ningún error.

Creo que puede ser por dos cosas:

1> que esto no esté bien escrito

<%@ LANGUAGE=VBScript %>
<% DIM BD, RS1, RS2, SQL1, SQL2
Set BD = Server.CreateObject("ADODB.Connection")
BD.Open "DSN=imateu.com.per"

Set RS1 = Server.CreateObject("ADODB.Recordset")
Set RS2 = Server.CreateObject("ADODB.Recordset")

if Request.form <> "" then
set fami = Request.Form("familia1")

SQL2 = "SELECT * FROM per_ped"
RS2.Open SQL2, BD

For p = 1 to posi
If Request.form.cantidad&p <> "" then
RS2.AddNew
RS2.Fields("Codigo") = 4545
RS2.Fields("Referencia") = Request.Form ("Referencia"&p)
RS2.Fields("Cantidad") = Request.Form ("Cantidad"&p)
RS2.Update
End If
next

else
set fami = Request.QueryString("familia")
end if

SQL1 = "SELECT * FROM per_art where familia='" & fami & "'"

RS1.Open SQL1, BD
%>


o

2> tengo una variable posi, en la cual sumo los registros cuando los pongo en el formulario. es posible que al hacer el link otra vez a la página, el valor lo pierda y entonces no hace el for y por eso no me graba?

<table border="0">
<tr>
<td width="55"></td>
<td width="100"><font color="#FF0000">Referencia</font></td>
<td width="300"><font color="#FF0000">Descripción</font></td>
<td width="50"><p align="center"><font color="#FF0000">C/Caja</font></td>
<td width="50"><p align="center"><font color="#FF0000">P/Unid</font></td>
<td width="50"><p align="center"><font color="#FF0000">Cajas</font></td>
</tr>
</table>

<form method="post" name="control" action="pag1.asp" >

<table border="0">
<% Do While Not rs1.EOF %>
<tr>
<% if RS1("foto") <> "" then %>
<td width="55"><img src="./images/<%=RS1("Foto")%>" name=imagen></td>
<%else%>
<td width="55"><font color="#000080" size="1">NO FOTO</font></td>
<%end if%>
<%posi = posi + 1%>
<input type="hidden" name="Referencia<%=posi%>" value="<%Response.Write RS1("referencia")%>">
<input type="hidden" name="familia<%=posi%>" value="<%Response.Write RS1("familia")%>">
<input type="hidden" name="pedido" value="1">

<td width="100" valign="top" bgcolor="#FFFFE1"><font color="#336699"><b><% Response.Write RS1("Referencia")%></b></font></td>
<td width="300" valign="top" bgcolor="#FFFFE1"><font color="#336699"><% Response.Write RS1("Descripcion")%>&nbsp;</font></td>
<td width="50" valign="top" bgcolor="#FFFFE1"><p align="right"><font color="#336699"><% Response.Write RS1("Cantidad")%>&nbsp;</font></td>
<td width="50" valign="top" bgcolor="#FFFFE1"><p align="right"><font color="#336699"><% Response.Write RS1("Precio")%>&nbsp;</font></td>
<td width="50" valign="top" ><input name="cantidad<%=posi%>" size=3 style="float: right"></td>
<td widht="10" valign="top">
<% RS1.Movenext %>
</tr>
<% Loop %>
</table>
<input type="submit" value=">>" style="font-size: 8pt; color: #FFFFFF; background-color: #336699"></a><tr>

</form>
  #2 (permalink)  
Antiguo 13/12/2002, 05:26
Avatar de linkses  
Fecha de Ingreso: agosto-2002
Ubicación: Sevilla - España
Mensajes: 785
Antigüedad: 21 años, 9 meses
Puntos: 0
Creo que tu problema es que nunca ejecuta el codigo para insertar el campo, debido a que

if Request.form <> "" then

debe contener algún campo, para comprobar si es nulo o no, por ejemplo:

if request.form ("campo") <> "" then

Suerte y Saludos
  #3 (permalink)  
Antiguo 13/12/2002, 05:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 249
Antigüedad: 21 años, 7 meses
Puntos: 0
He puesto

If Request.form ("Referencia1") <> "" then

Que Referencia1, debe ser el primero y no funciona, igualmente, creo que si que ejecuta el código, ya que si no, no me cargaría la tabla en el formulario.

No ejecutaría:

set fami = Request.Form("familia1")

y entonces,

SQL1 = "SELECT * FROM per_art where familia='" & fami & "'"
RS1.Open SQL1, BD

esto daría error, no?
  #4 (permalink)  
Antiguo 13/12/2002, 06:04
 
Fecha de Ingreso: noviembre-2002
Mensajes: 249
Antigüedad: 21 años, 7 meses
Puntos: 0
He puesto a piñon fijo:

For p = 1 to 2

y entonces, me da el siguiente error:

ADODB.Recordset error '800a0cb3'

El Recordset actual no admite actualizaciones. Puede ser una limitación del proveedor o del tipo de bloqueo seleccionado.

/usuarios/cro/pag1.asp, line 17


Por lo que, seguro que la variable posi, la inicializa al cargar la página y a parte el error este.

jooooooo

lo de la variable, no es mucho problema, ya me lo temía, puedo hacer de entrada dos cosas, o paso en el form el valor de posi, o creo que hay algo como : "SELECT COUNT (*) FROM PER_ART".

Si alguien sabe otra manera de poder averiguar el número de registros de una tabla.

Y el error, si alguien tiene alguna idea...
  #5 (permalink)  
Antiguo 13/12/2002, 06:15
 
Fecha de Ingreso: noviembre-2002
Mensajes: 249
Antigüedad: 21 años, 7 meses
Puntos: 0
OTRA MANERA

for p = 1 to RS1.RecordCount

Creo que es la mejor opción.

El error, sigue saliendo...
  #6 (permalink)  
Antiguo 13/12/2002, 06:50
 
Fecha de Ingreso: noviembre-2002
Mensajes: 249
Antigüedad: 21 años, 7 meses
Puntos: 0
ya esta!!!

La cosa queda así y va perfecto.

<% DIM BD, RS1, RS2, SQL1, SQL2
Set BD = Server.CreateObject("ADODB.Connection")
BD.Open "DSN=imateu.com.per"

Set RS1 = Server.CreateObject("ADODB.Recordset")
Set RS2 = Server.CreateObject("ADODB.Recordset")

if Request.form ("Referencia1") <> "" then
set fami = Request.Form("familia1")
SQL1 = "SELECT * FROM per_art where familia='" & fami & "'"
RS1.Open SQL1, BD, 1, 2
conta = RS1.RecordCount

Response.Write RS1.RecordCount

SQL2 = "SELECT * FROM per_ped"
RS2.Open SQL2, BD, 2, 3, 1

For p = 1 to conta
If Request.form ("cantidad"&p) <> "" then
RS2.AddNew
RS2.Fields("Cliente") = 4545
RS2.Fields("Referencia") = Request.Form ("Referencia"&p)
RS2.Fields("Cantidad") = Request.Form ("Cantidad"&p)
RS2.Update
End If
next

else
set fami = Request.QueryString("familia")
SQL1 = "SELECT * FROM per_art where familia='" & fami & "'"
RS1.Open SQL1, BD

end if


%>


Al final tenía el problama al abrir el recordset. al no poner ningún parametro me lo bloqueaba.

RS1.Open SQL1, BD, 1, 2

RS2.Open SQL2, BD, 2, 3, 1
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 20:11.