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

borrar una id autonumerica

Estas en el tema de borrar una id autonumerica en el foro de ASP Clásico en Foros del Web. Amigos del foro, tengo el siguiente codigo: borrar_registro.asp <% Set con = Server.CreateObject("ADODB.Connection") Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/base.mdb")&";" %> <FORM METHOD="POST" ACTION="borrar.asp"> Nombre<br> <% ...
  #1 (permalink)  
Antiguo 19/02/2005, 00:06
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
borrar una id autonumerica

Amigos del foro, tengo el siguiente codigo:

borrar_registro.asp

<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/base.mdb")&";"
%>

<FORM METHOD="POST" ACTION="borrar.asp">
Nombre<br>
<%
sql = "SELECT * FROM alumnos ORDER BY id DESC"
Set RS = con.Execute(sql)
%>
<select name="id ">
<%do while not RS.eof%>
<option><%=RS("id ")%>
<%RS.movenext
loop
%>
</select>
<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>


borrar.asp

<HTML>
<HEAD>
<TITLE>Borrar.asp</TITLE>
</HEAD>
<BODY>
<%
id =Request.Form("id ")
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/base.mdb")&";"
sql="Delete From alumnos Where id ='" & id & "'"
set RS = con.Execute(sql)
%>

<h1><div align="center">Registro Borrado</div></h1>
<div align="center"><a href="borrar.asp">Visualizar el contenido de la base</a></div>

<%
con.Close
%>
</BODY>
</HTML>


EL PROBLEMA ES EL SIGUIENTE, CUANDO EL ID ES, AUTONUMERICO Y/O ID PRINCIPAL O CON UN NOM_BRE CON GUIN BAJO. NO ME FUNCIONA EL CODIGO. PERO CUANDO EL ID NO TIENE NINGUNA PROPIEDAD ESPECIAL, YA SEA SOLO UN CAMPO DE TEXTO O NUMERICO Y UN NOMBRE SIN GUION BAJO. FUNCIONA CORRECTAMENTE.


MI PREGUNTA ES, ¿EXISTE OTRA FORMA DE BORRAR REGISTROS, QUE TENGAN COMO PROPIEDADES O NOM_BRES ESPECIALES? O ¿SE PUEDE MEJORAR ESTE CODIGO?

Última edición por Zerg; 19/02/2005 a las 00:07
  #2 (permalink)  
Antiguo 21/02/2005, 09:10
Avatar de drmkace  
Fecha de Ingreso: febrero-2005
Mensajes: 26
Antigüedad: 19 años, 3 meses
Puntos: 0
¿a que te referis con nombres especiales??, si el nombre no es por ej. Campo id tne suqe escribir [Campo Id], y si es autonumerico lo tendria que borrar lo mas bien, talves hay un teme de integridad referencial,fijate cuando definiste las relaciones si te permite elminar en cascada. pasame bien el mensaje de error que te da sino.

Saludos,
drmkace
  #3 (permalink)  
Antiguo 21/02/2005, 10:27
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
sql="Delete From alumnos Where id ='" & id & "'"


cual es el tipo de dato de ID ?
  #4 (permalink)  
Antiguo 21/02/2005, 12:05
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
Me Explico Mejor

por ejemplo creo una base de nombre agenda.mdb con una tabla llamada clientes y con dos campos uno llamado Nombre y otro llamado telefono ambos campos son solo texto OK!

ahora el codigo de borrar_usuario.asp sería:
<html>.....
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("agenda.mdb")&";"
%>

<FORM METHOD="POST" ACTION="borrar.asp">
Nombre<br>
<%
sql = "SELECT * FROM clientes ORDER BY nombre DESC"
Set RS = con.Execute(sql)
%>
<select name="nombre">
<%do while not RS.eof%>
<option><%=RS("nombre")%>
<%RS.movenext
loop
%>
</select>
<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>
....</html>



EL CODIGO PARA DE borrar.asp sería:

<%
nombre=Request.Form("nombre") <-- recuperamos del formulario
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("agenda.mdb")&";"
sql="Delete From clientes Where nombre='" & nombre & "'"
set RS = con.Execute(sql)
%>

<h1><div align="center">Registro Borrado</div></h1>
<div align="center"><a href="borrar.asp">Volver</a></div>

<%
con.Close
%>
<%
if session("lkjkljfkljfdlk") = "" then response.redirect "borrar.asp"%> <-- esto nos redirecciona automaticamente a la pagina anterior, es opcional.

ESTOY 100% SEGURO QUE SI PRUEBAN ESTO LES FUNCIONA CORECTAMENTE...

PERO SI AL CAMPO NOMBRE DE PONEN NOM_BRE, NO LES VÁ A FUNCIONAR.

O SI, LE AGRAGAN EL CAMPO id (AUTONUMERICO) Y EN VEZ DE BORRAR EL NOMBRE, BORRAN EL id NO LES FUNCIONA.
  #5 (permalink)  
Antiguo 21/02/2005, 12:36
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Te arroja algun error?????

Yo a todas mi stablas les coloco _ y NUNCA he tenido dramas

... debuguea

prueba imprimiendo en pantalla el string que vas a ejecutar y lñuego ve si es que lo imprimido tiene algun sentido

  #6 (permalink)  
Antiguo 21/02/2005, 12:38
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:
PERO SI AL CAMPO NOMBRE DE PONEN NOM_BRE, NO LES VÁ A FUNCIONAR.

O SI, LE AGRAGAN EL CAMPO id (AUTONUMERICO) Y EN VEZ DE BORRAR EL NOMBRE, BORRAN EL id NO LES FUNCIONA.
Pues... ambas cosas SI deberían funcionarte por los siguientes motivos:

1- Al nombre de campo NOM_BRE no le veo ninguna anomalía.. Desconozco la totalidad de palabras reservadas, pero ese nombre de campo no parecería ser ninguna de ellas.

2- Cuando se elimina (o modifica) un registro, se acostumbra hacerlo referenciándolo por su ID autonumérico porque puede ocurrir (como sería el caso del ejemplo que colocás) que borres accidentalmente más de un registro (en tu ejemplo, dos o más personas pueden llamarse de la misma manera.. por lo que al eliminar a UN "juan pérez" podrías estar eliminando a TODOS los "juan pérez")

Hacé una cosa (que deberías haber hecho desde el principio): colocá el mensaje de error que te tira y vemos qué puede ser lo que te está ocurriendo (aunque arriesgaría a que se trata de un error de "tipos de datos")

Saludos
__________________
...___...
  #7 (permalink)  
Antiguo 21/02/2005, 12:58
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
de hecho tienen un ejemplo aqui

http://www.tecnicosenlinea.cl/demos/...rar_nombre.asp

el problema es que por ejemplo, si quisiera agregarle una ID (autonumerica)
y en vez de selecionar por nombre, selecione por ID. no puedo borrar la id.

hace todo el proceso, pero no modifica la base de datos
  #8 (permalink)  
Antiguo 21/02/2005, 13:11
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
De acuerdo

Cita:
Iniciado por Al Zuwaga
2- Cuando se elimina (o modifica) un registro, se acostumbra hacerlo referenciándolo por su ID autonumérico porque puede ocurrir (como sería el caso del ejemplo que colocás) que borres accidentalmente más de un registro (en tu ejemplo, dos o más personas pueden llamarse de la misma manera.. por lo que al eliminar a UN "juan pérez" podrías estar eliminando a TODOS los "juan pérez")
es por eso que quiero borrar la id

y lo pueden bajar de aqui

http://linux.tecnicosenlinea.cl/download/asp/borrar.zip

y probar aqui:
http://www.tecnicosenlinea.cl/demos/...rar_nombre.asp
a la base cambiale el compo por nombre por id
y hazlo autonumerico, y reemplaza en el codigo los valos nombre
por el valor id, y veras que no funciona



MUCHAS GRACIAS POR SUS APORTES Y POR SU TIEMPO

Última edición por Zerg; 21/02/2005 a las 13:17
  #9 (permalink)  
Antiguo 21/02/2005, 13:24
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
lo probe en linea y me funciona.
sin embargo si es que coloco dos registros con el mismo nombre, los borra los dos.

en fin

¿a que te refieres con borrar el id ????
  #10 (permalink)  
Antiguo 21/02/2005, 13:30
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
jojojo, me refiero a que como dijo Al Zuwaga
si borras el campo nombre y ese nombre se repite borras los dos campos, es por eso que a cada nombre le asigno un numero autonumerico, como es autonumerico este no se repite.

pero cuando le cambio la propiedad al campo por (AUTONUMERICO) no me funciona la aplicacion. ( la idea seria tener los siguientes campos ID, Nombre, Telefono) para borrar eligiendo el ID (que es autonumerico)
  #11 (permalink)  
Antiguo 21/02/2005, 13:43
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola.
No te funciona con el campo id porque escribes mal las comillas como si fuera un campo de texto y es un campo autonumerico.
Te escribo el codigo de borrar.asp que has escrito en el primer post pero modificado.
Código:
<HTML>
<HEAD>
<TITLE>Borrar.asp</TITLE>
</HEAD>
<BODY>
<%
id =Trim(Request.Form("id "))
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/base.mdb")&";"
sql="Delete From alumnos Where id ="&id&";"
set RS = con.Execute(sql)
%>

<h1><div align="center">Registro Borrado</div></h1>
<div align="center"><a href="borrar.asp">Visualizar el contenido de la base</a></div>

<%
con.Close
%>
</BODY>
</HTML>
Esto te tiene que funcionar. De todas formas este código tiene un fallo de seguridad por SQL injection. Es muy facil corregirlo
Saludos.

Última edición por Ramonkill; 21/02/2005 a las 13:44
  #12 (permalink)  
Antiguo 21/02/2005, 13:51
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
Primero: A la tabla clientes creale el campo autonumerico... llamalo ID (en el zip que bajé, la tabla no tenía el campo creado)

Segundo: Reemplazá el <SELECT> del archivo borrar_nombre.asp, que es éste...

Código:
<select name="nombre">
<%do while not RS.eof%>
	<option><%=RS("nombre")%>
	<%RS.movenext
	loop
%>
</select>
... por éste:

Código:
<select name="ID">
<%do while not RS.eof%>
	<option value="<%=RS("ID")%>"><%=RS("nombre")%>
	<%RS.movenext
	loop
%>
</select>

Tercero: En el archivo borrar.asp reemplazás esta línea...

Código:
sql="Delete From clientes Where nombre='" & nombre & "'"
por esta...

Código:
sql="Delete From clientes Where ID = " & Request.Form("ID")
... y... listo
__________________
...___...
  #13 (permalink)  
Antiguo 21/02/2005, 14:02
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
amazing!!!


alguna otra cosita?


jejeje
  #14 (permalink)  
Antiguo 21/02/2005, 14:25
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
gracias a todos

Gracias por su aporte, la verdad es que este foro es lo mejor que hay...
sino fuera por ustedes..


... no hubiera solucionado mi problema.... OK

esta para que lo prueben en

http://www.tecnicosenlinea.cl/demos/...rar_nombre.asp

byeee



  #15 (permalink)  
Antiguo 21/02/2005, 14:40
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
No queda muy descriptivo el desplegable de nombre para borrar si solo colocás el ID. Tal vez sería mejor esto:


<option value="<%=RS("ID")%>"><%=RS("ID") & " - " & RS("nombre")%></option>
__________________
...___...
  #16 (permalink)  
Antiguo 21/02/2005, 15:07
 
Fecha de Ingreso: enero-2003
Ubicación: punta arenas
Mensajes: 65
Antigüedad: 21 años, 5 meses
Puntos: 0
Cita:
Iniciado por Muzztein
amazing!!!


alguna otra cosita?


jejeje


sii jhojoojoj, muchas gracias por todo

lo ultimo ¿como los ordeno acendentemente? de 1 a ..... 15...etc


Última edición por Zerg; 21/02/2005 a las 15:08
  #17 (permalink)  
Antiguo 21/02/2005, 15:10
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola.
Pues escribes en la sentencia sql al final ORDER BY id ASC.
Saludos.
__________________
A cada cual según su necesidad, de cada cual según su capacidad.
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 22:17.