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

evitar insertar duplicados

Estas en el tema de evitar insertar duplicados en el foro de ASP Clásico en Foros del Web. hola tengo un pequeño problema miren tengo esta consultas Insert en sql (base de datos access) Cita: <% Sub grabar (FECHA, HORA) Hora_In_Sistemas= HORA Fecha_In_Sistemas= ...
  #1 (permalink)  
Antiguo 31/03/2006, 09:04
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 19 años, 3 meses
Puntos: 8
evitar insertar duplicados

hola tengo un pequeño problema miren tengo esta consultas Insert en sql (base de datos access)

Cita:
<%
Sub grabar (FECHA, HORA)
Hora_In_Sistemas= HORA
Fecha_In_Sistemas= FECHA
Hora_In_Sistemas = FormatDateTime(Hora_In_Sistemas, 4)
Entidad=Request.Form("ENTIDAD")
Dir_Entidad=Request.Form("DIRENTIDAD")
Ciu_Entidad=Request.Form("CIUDENTIDAD")
At_Entidad=Request.Form("ATENTIDAD")
Ord=Request.Form("ORD")
Dac=Request.Form("Dac")
Num_Subtel=Request.Form("NUMSUBTEL")
Fech_Ord=Request.Form("FECHORD")
Fech_In_Form=Request.Form("FECHINFORM")
Nom_Cliente=Request.Form("NOMCLIENTE")
Rut_Cliente=Request.Form("RUTCLIENTE")
Tele_Cliente=Request.Form("TELECLIENTE")
Dir_Cliente=Request.Form("DIRCLIENTE")
Ciu_Cliente=Request.Form("CIUCLIENTE")
Monto=Request.Form("MONTO")
Insistencia = Request.Form("Insistencia")
Materia = Request.Form ("Materia")
ID = Request.Form ("ID")

Set Conexion = Server.CreateObject ("ADODB.Connection")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Bases\Reclamo.mdb;"

IF ID <> "" then

IF Insistencia = "Con Insistencia" then
Fecha_Ven= Date()+ 4
else
Fecha_Ven= Date()+ 14
End If
Set Registros = Server.CreateObject("AdoDb.Recordset")
Sql = "INSERT INTO TEMP_RECLAMOS" _
& "(REC_ENTIDAD," _
& "REC_DIR_ENTIDAD," _
& "REC_CIU_ENTIDAD,"_
& "REC_ATE_ENTIDAD," _
& "REC_ORD, REC_DAC," _
& "REC_NUM_SUBTEL,"_
& "REC_FECHA_ORD," _
& "REC_FECHA_INGRE_FORM," _
& "REC_NOM_CLI," _
& "REC_RUT_CLI," _
& "REC_TEL_CLI," _
& "REC_DIR_CLI," _
& "REC_CIU_CLI,"_
& "REC_MONTO_REC," _
& "REC_INSISTENCIA," _
& "REC_F_INGRE_SISTEMA," _
& "REC_H_INGRE_SISTEMA," _
& "REC_MATERIA," _
& "REC_ID," _
& "REC_FECHA_VEN)" _
& "VALUES('"&Entidad&"', '"&Dir_Entidad&"'," _
& " '"&Ciu_Entidad&"', '"&At_Entidad&"', '"&Ord&"'," _
& " '"&Dac&"', '"&Num_Subtel&"', '"&Fech_Ord&"', '"&Fech_In_Form&"'," _
& " '"&Nom_Cliente&"', '"&Rut_Cliente&"', '"&Tele_Cliente&"'," _
& " '"&Dir_Cliente&"', '"&Ciu_Cliente&"', '"&Monto&"', '"&Insistencia&"'," _
& " '"&Fecha_In_Sistemas&"', '"&Hora_In_Sistemas&"','"&Materia&"', '"&ID&"', '"&Fecha_Ven&"');"
Conexion.Execute Sql
End If

Conexion.Close
Set Conexion = Nothing
End Sub

%>
los inserta correctamente todo bien pero me gustaria saber como puedo hacer para que cuando el usuario ingrese un registro que ya existe en la bese de datos me muestre un mensaje y no que me mande a una pagina donde muestra un error como esto

Cita:
Tipo de error:
Microsoft JET Database Engine (0x80004005)
Los cambios solicitados en la tabla no se realizaron correctamente porque crearían valores duplicados en el índice, clave principal o relación. Cambie los datos en el campo o los campos que contienen datos duplicados, quite el índice o vuelva a definir el índice para permitir entradas duplicadas e inténtelo de nuevo.
/PRUEBAS/Muestra/INGRESO/Reclamos.asp, line 63
ai alguin sabe como mostrar un mensaje algo asi (este registro ya existe en la base de datos, modifique los datos)

en ves de que me mande a una pagina donde muestra el error

de antemano gracias
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #2 (permalink)  
Antiguo 31/03/2006, 09:10
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 21 años
Puntos: 0
cual es tu clave primaria en la tabla?...

si no tienes ninguna, créate un campo autonumérico... de ésta forma nunca tendrás problemas con duplicados...

saludos
  #3 (permalink)  
Antiguo 31/03/2006, 09:33
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años, 6 meses
Puntos: 1
Exacto, crea un autonúmerico que sea clave para asegurar la integridad referencial en tus datos (como dice sbandija25)
  #4 (permalink)  
Antiguo 31/03/2006, 09:35
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 19 años, 3 meses
Puntos: 8
si eso lo tengo pero si ingreso alguna clave primaria que ya este como registro en mi base de datos pasa lo que comentaba en mi post inicial

si pueden ayudar a resolver el problema se los agradaceria
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #5 (permalink)  
Antiguo 31/03/2006, 09:49
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años, 6 meses
Puntos: 1
Después de recoger todos los datos
Cita:
Sub grabar (FECHA, HORA)
Hora_In_Sistemas= HORA
Fecha_In_Sistemas= FECHA
Hora_In_Sistemas = FormatDateTime(Hora_In_Sistemas, 4)
Entidad=Request.Form("ENTIDAD")
Dir_Entidad=Request.Form("DIRENTIDAD")
Ciu_Entidad=Request.Form("CIUDENTIDAD")
At_Entidad=Request.Form("ATENTIDAD")
Ord=Request.Form("ORD")
Dac=Request.Form("Dac")
Num_Subtel=Request.Form("NUMSUBTEL")
Fech_Ord=Request.Form("FECHORD")
Fech_In_Form=Request.Form("FECHINFORM")
Nom_Cliente=Request.Form("NOMCLIENTE")
Rut_Cliente=Request.Form("RUTCLIENTE")
Tele_Cliente=Request.Form("TELECLIENTE")
Dir_Cliente=Request.Form("DIRCLIENTE")
Ciu_Cliente=Request.Form("CIUCLIENTE")
Monto=Request.Form("MONTO")
Insistencia = Request.Form("Insistencia")
Materia = Request.Form ("Materia")
ID = Request.Form ("ID")
Haces una consulta preguntando si ya existe en la BD ese ID (que me figuro que será único en tu BD no?) y si existe muestras error, y si no pos palante!!!
  #6 (permalink)  
Antiguo 31/03/2006, 10:08
Avatar de AnaLuisa  
Fecha de Ingreso: marzo-2006
Ubicación: México
Mensajes: 254
Antigüedad: 19 años, 1 mes
Puntos: 0
Deberias tener un if por si existe el registro te mande el mensasje......
__________________
nabetsE
  #7 (permalink)  
Antiguo 31/03/2006, 10:10
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 19 años, 3 meses
Puntos: 8
jajajaj gracias compadre poor tu respuesta pero eso es lo que tenia en mente hacer pero escribi este pos para ver si habia otra forma de hacer eso mismo sin tener que crear una consulta antes

yo pensaba algo con un bucle o alguna condicion pero bueno

gracias por sus respuestas se agradecen y se agradece el tiempo que se dedico a mi post

gracias
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #8 (permalink)  
Antiguo 31/03/2006, 10:33
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Si no quieres buscar el registro, pues simplemente coloca un on error y un manejador para el error con el mensaje que deseas.

Saludos
  #9 (permalink)  
Antiguo 31/03/2006, 10:37
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 19 años, 3 meses
Puntos: 8
ok gracias
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #10 (permalink)  
Antiguo 31/03/2006, 13:09
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años, 6 meses
Puntos: 1
Myakire Siempre al quite eh?
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:56.