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

Graba bien en la bd, pero bota mensaje de error :(

Estas en el tema de Graba bien en la bd, pero bota mensaje de error :( en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo un problema medio raro q no he podido resolver, tengo una página donde ingreso los datos de lo q podria llamar ...
  #1 (permalink)  
Antiguo 16/05/2006, 07:45
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
Graba bien en la bd, pero bota mensaje de error :(

Hola a todos, tengo un problema medio raro q no he podido resolver, tengo una página donde ingreso los datos de lo q podria llamar el detalle de una factura, solo q en este caso son detalles de una planta. En esta página, para agregar un nuevo "detalle" se presiona un botón "Agregar" y se van añadiendo filas para q el usuario ingrese los datos respectivos. En la segunda página capturo los datos de todos los campos ingresados y procedo a la grabación en la bd. El problema es q cuando presiono el boón de guardar, los datos se graban bien pero me sale un mensaje de error referido a la llave primaria de la tabla detalles, la cual está compuesta x la llave primaria de la tabla "cabecera" más una llave primaria de la talba "detalles" q en este caso se llama Parte_Uso. El mensaje de error dice q no se puede grabar datos duplicados en la tabla Parte_Uso. Lo curioso es q en le pagina de guardar, cuando declaro la variable nveces, no me graba los datos pero no me bota ningún mensaje de error, y cuando ya no lo declaro me graba pero me bota el mensaje de error. Aquí les dejo las dos páginas para ver si dan con el problema:

<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<TABLE height="100%" cellSpacing=0 cellPadding=0 width=780 border=0>
<TBODY>
<% dim cod
cod = Request.QueryString("cod")
%>
<TR>
<TD vAlign=top align=left colSpan=3 height=120><!--#Include file="cabecera.asp"-->
</TD>
</TR>
<TR bgColor=#ffffff>
<TD vAlign=top height="100%">
<TABLE cellSpacing=5 cellPadding=0 align=center border=0 width="100%">
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 border=0 width="100%">
<FORM name=thisform action="grabar_partes_uso.asp" method="post">
<TBODY>
<TR>
<TD class=clsPageHeader align=middle height=30>REGISTRAR DATOS DE PARTES, USOS Y BIBLIOGRAFÍA</TD>
</TR>
<TR>
<TD>
<TABLE id=TABLE1>
<TBODY>
<TR>
<TD colSpan=4 height=30>
<p align="left"><B>Datos de Registro:</B></p></TD>
</TR>
<TR class=clsListOuterTableCell>
<TD width="2%">Nº</TD>
<TD width="28%">Parte</TD>
<TD width="35%">Usos</TD>
<TD width="35%">Bibliografía</TD>
</TR>
<%
nveces=request.form("nveces")
if nveces="" then
nveces=0
else
nveces = cint(nveces)
end if
if request.form("btnadd")<>"" then
nveces = nveces + 1
for i=1 to nveces
%>
<TR>
<TD width="2%"><%=(i)%><input type=hidden name="cod_<%=(i)%>" value="<% =(cod) %>"></TD>
<TD width="28%"><input type="text" name="parte_<%=(i)%>" size="30" value="<%=request.form("parte_" & i)%>"></TD>
<td width="35%"><TEXTAREA name="uso_<%=(i)%>" rows=3 cols=40 onKeyUp="return maximaLongitud(this,500)"><%=request.form("uso_" & i)%></TEXTAREA>
<td width="35%"><TEXTAREA name="biblio_<%=(i)%>" rows=3 cols=40 onKeyUp="return maximaLongitud(this,800)"><%=request.form("biblio_ " & i)%></TEXTAREA>
</TR>
<%
next
end if
%>
</TBODY>
</TABLE>
</TD>
</TR>
<TR>
<TD>&nbsp;<input type="hidden" name="nveces" size="10" value="<%=(nveces)%>"></TD>
<TD>&nbsp;<input type="hidden" name="id_planta" size="10" value="<%=(cod)%>"></TD>
</TR>
<TR>
<TD colSpan=8 height=35>
<TABLE align=center>
<TBODY>
<TR>
<TD>
<input type="submit" value="Agregar" name="btnadd" onclick="thisform.action='reg_partes_uso.asp?cod=< %=(cod)%>';thisform.submit()">
</TD>
<TD>
<input type="submit" value="Guardar" name="btnsave" onclick="thisform.action='grabar_partes_uso.asp';t hisform.submit()">
</TD>
<TD></TD>
</FORM>
<FORM name=form2 action="main.asp" method=post>
<TD>
<input type="submit" value=" Salir " class="TdNegroCuerpo" id=submit1 name=submit2>
</TD>
</FORM>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
.
.
.

y esta es la página donde capturo los datos del formulario:

Dim sql, rs, cod, c1, c2, c3, id
id = Request.form("id_planta")
nveces =request.form("nveces")
nveces = cint(nveces)

for i=1 to nveces
cod = Request.form("cod_" & i)
c1 = request.form("parte_" & i)
c2 = request.form("uso_" & i)
c3 = request.form("biblio_" & i)

sql = "insert into Parte_Uso(id_planta,id_parte,uso,bibliografia)"
sql = sql &" Values ('"&cod &"', "
sql = sql &"'"&c1 & "', "
sql = sql &"'"&c2 & "', "
sql = sql &"'"&c3 & "')"
set rs = conexion.Execute(sql)

next

Response.Redirect("ver_datos_grabados.asp?cod="&id )
__________________
Tarecito
  #2 (permalink)  
Antiguo 18/05/2006, 07:40
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
nadie??!!! ... :(
__________________
Tarecito
  #3 (permalink)  
Antiguo 18/05/2006, 23:20
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
y qué mensaje de error es? (estos duendes de ASP, cada día más cachondos!!!)
  #4 (permalink)  
Antiguo 23/05/2006, 08:39
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
el mensaje es q no se puede insertar una llave duplicada, pero como les digo, igual graba todos lso datos correctamente. El mensaje exacto ese este:

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Infracción de la restricción PRIMARY KEY 'PK_Parte_Uso'. No se puede insertar una clave duplicada en el objeto 'Parte_Uso'.
/planta/grabar_partes_uso.asp, línea 24
__________________
Tarecito
  #5 (permalink)  
Antiguo 23/05/2006, 09:10
Avatar de WILLIAMGG  
Fecha de Ingreso: febrero-2005
Mensajes: 218
Antigüedad: 20 años, 1 mes
Puntos: 0
Id_planta es clave única?
Si es clave unica entonces es diseño de BD
  #6 (permalink)  
Antiguo 23/05/2006, 09:37
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
la calve es id_planta + id_parte
__________________
Tarecito
  #7 (permalink)  
Antiguo 23/05/2006, 10:07
Avatar de WILLIAMGG  
Fecha de Ingreso: febrero-2005
Mensajes: 218
Antigüedad: 20 años, 1 mes
Puntos: 0
Mira el error te indica que la clave k estas intentando ingresar ya existe, entonces crea una clave con tres id y solucionas tu problem
  #8 (permalink)  
Antiguo 23/05/2006, 11:06
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
ya lo hice, y me sigue dando el mismo error
__________________
Tarecito
  #9 (permalink)  
Antiguo 23/05/2006, 11:11
Avatar de Tarecito  
Fecha de Ingreso: noviembre-2003
Ubicación: Lima - Perú
Mensajes: 443
Antigüedad: 21 años, 5 meses
Puntos: 1
he probado con uan clave de 4 y sigue lo mismo
__________________
Tarecito
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 12:14.