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

error al insertar en db

Estas en el tema de error al insertar en db en el foro de ASP Clásico en Foros del Web. Buenos días, tengo un pequeño problema, tengo una pagina donde doy de alta al una serie de personas, lo que pasa es que si una ...
  #1 (permalink)  
Antiguo 27/02/2006, 03:50
 
Fecha de Ingreso: abril-2005
Ubicación: Santiago Compostela
Mensajes: 213
Antigüedad: 20 años
Puntos: 0
error al insertar en db

Buenos días, tengo un pequeño problema, tengo una pagina donde doy de alta al una serie de personas, lo que pasa es que si una persona existe e introduzco otra con su mismo dni, quiero que me redirija a otra pagina donde muestro un mensaje de error, eso lo tenia hecho, lo que pasa es que cambie la forma de conectarme a la bd, y ahora me sale el error del IIS que dice que no puede insertar dicho registro porque crearia valores duplicados.
la nueva forma de conectarme es:

Código:
<%
Set RstPerso = Server.CreateObject("ADODB.Recordset")
RstPerso.ActiveConnection= CN
sql ="INSERT into Personas(DNI,Nome,Apelidos,DataAlta) values ('"&Dni&"','"&Nome&"','"&Apelidos&"','"&DataAlta&"')"
RstPerso.Open SQL,CN ,adOpenDynamic,adLockOptimistic
on error resume next


RstPerso.Close
SET RstPerso = Nothing%>
la conexion la tengo en otro archivo que es:

Código:
<%
	Set CN=Server.CreateObject("ADODB.Connection")
	CN.ConnectionString="DSN=dep;'';'';"
	CN.Open
%>
alguno sabe a que se debe.
un saludo.
  #2 (permalink)  
Antiguo 27/02/2006, 04:03
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
¿Como es la estructura de la tabla Personas? Quiero decir si tiene algun campo autonumérico y cual es su clave primaria ¿Que BD usabas antes y cual es la nueva?


Un saludo
  #3 (permalink)  
Antiguo 27/02/2006, 05:01
 
Fecha de Ingreso: abril-2005
Ubicación: Santiago Compostela
Mensajes: 213
Antigüedad: 20 años
Puntos: 0
Hola buenos dias, lo único que cambie fue esto:
esto es le codigo nuevo:
Código:
<%
Set RstPerso = Server.CreateObject("ADODB.Recordset")
RstPerso.ActiveConnection= CN
sql ="INSERT into Personas(DNI,Nome,Apelidos,DataAlta) values ('"&Dni&"','"&Nome&"','"&Apelidos&"','"&DataAlta&"')"
RstPerso.Open SQL,CN ,adOpenDynamic,adLockOptimistic
on error resume next%>
y este el viejo:

Código:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open="DSN=dep;'';'';"
on error resume next
sql ="INSERT into Personas(DNI,Nome,Apelidos,DataAlta) values ('"&Dni&"','"&Nome&"','"&Apelidos&"','"&DataAlta&"')"
conn.execute sql%>

<%Conn.Close
SET Conn = Nothing
y desde que puse la nueva aforma de conectarme, no me funciona.
  #4 (permalink)  
Antiguo 27/02/2006, 05:08
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Segun lei en tu primer post, el error es de BD, no es de código (no acepta valores duplicados). Eso es porque algun campo (supongo que DNI) es primary key o clave primaria. Has intentado insertar un nuevo registro con un DNI igual ha alguno anterior y salta el error de Duplicate Keys de tu BD. No se como lo tendrías antes pero chequea la BD por si tienes valores duplicados en el campo primario. Corrigeme si me equivoco.


Un saludo
  #5 (permalink)  
Antiguo 27/02/2006, 05:17
 
Fecha de Ingreso: abril-2005
Ubicación: Santiago Compostela
Mensajes: 213
Antigüedad: 20 años
Puntos: 0
buenas otra vez.
cuando tenia este codigo:
Código:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open="DSN=dep;'';'';"
on error resume next
sql ="INSERT into Personas(DNI,Nome,Apelidos,DataAlta) values ('"&Dni&"','"&Nome&"','"&Apelidos&"','"&DataAlta&"')"
conn.execute sql%>

<%Conn.Close
SET Conn = Nothing
tenia una opcion donde le decia que si me daba el error de claves duplicadas me redireccionara a otra pagina, en donde explicaba cual era el error, y que clave estaba duplicada.

despues cambie la cadena de conexion por esta otra:
Código:
<%
Set RstPerso = Server.CreateObject("ADODB.Recordset")
RstPerso.ActiveConnection= CN
sql ="INSERT into Personas(DNI,Nome,Apelidos,DataAlta) values ('"&Dni&"','"&Nome&"','"&Apelidos&"','"&DataAlta&"')"
RstPerso.Open SQL,CN ,adOpenDynamic,adLockOptimistic
on error resume next%>
y fue desde entonces cuando pasa de la condición y muestra la pagina de error del iis.
creo que el error esta en la cadena de conexion y en el orden de las instrucciones.
probé varias formas y nada.
gracias
  #6 (permalink)  
Antiguo 27/02/2006, 05:41
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Pues entonces, el on error resume next debe ir antes de abrir el recordset. Despues no hace nada.

Chequea este codigo a ver si te sirve para controlar los errores:

http://www.forosdelweb.com/f15/capturar-error-asp-373791/

Solo tienes que ver que numero de error genera el Duplicate Keys.



Un saludo
  #7 (permalink)  
Antiguo 27/02/2006, 06:46
 
Fecha de Ingreso: abril-2005
Ubicación: Santiago Compostela
Mensajes: 213
Antigüedad: 20 años
Puntos: 0
me funciono como me comentaste tu.
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:50.