Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ASP
 Error al intentar borrar registros
 Foro Bloqueado  Tema Bloqueado


Autor Temas
Khaspah
Starting Member

España
25 Posts
Mensajes - 23 Oct 2007 :  14:56:37  Ver Perfil  Enviar Email
Buenas...

Estoy haciendo una serie de páginas en las que el usuario puede crear registros nuevos en una base de datos para luego editarlos.

El problema viene cuando intento que también puedan eliminar registros: muestro todos los registros para que elijan uno que se incluirá en la url (tipo borrar.asp?file=archivo )para efectuar el borrado mediante estas instrucciones:

<%

DSN="PROVIDER=Microsoft.Jet.OLEDB.4.0;"
DSN=DSN & "DATA SOURCE=" & server.mappath("BASE.mdb") & ";"
DSN=DSN & "USER ID=;PASSWORD=;"

%>

<%

sql = "Delete * From TABLA Where nombreurl = "&Cstr(Request.Querystring("delete")) &""
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open sql, DSN, 3, 3
Rs.Delete
Rs.Close

%>


Al intentar ejecutarlo, me indica el siguiente error:

----------------------------------------
Microsoft JET Database Engine error '80040e10'

No se han especificado valores para algunos de los parámetros requeridos.

/folder/file.asp, línea 67
----------------------------------------

La línea 67 es

Rs.Open sql, DSN, 3, 3

¿Alguien me puede decir qué es lo que falla?

Muchas gracias por anticipado

:-)

Admin
Forum Admin

España
229 Posts
Posted - 26 Oct 2007 :  19:41:17  Ver perfil  Enviar e-mail
hazte un response.write en pantalla de la sentencia que ejecutas y comprueba que es correcta, posiblemente el valor del campo este vacio o el formato no sea correctoInicio Pagina
DonGato
Moderator

España
263 Posts
Posted - 31 Oct 2007 :  11:16:59  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
prueba esto. creo que está mal el SQL, quitale el "*"

sql = "Delete From TABLA Where nombreurl = "&Cstr(Request.Querystring("delete")) &""


Inicio Pagina

ggmacchi
Starting Member

Argentina
20 Posts
Posted - 02 Nov 2007 :  20:09:48  Ver perfil  Enviar e-mail
Ademas de lo que dice Don Gato, no estaria faltando ' '??

... '"&Cstr(Request.Querystring("delete")) &"'"

gerInicio Pagina

DonGato
Moderator

España
263 Posts
Posted - 04 Nov 2007 :  10:13:54  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
Cierto, GGmachi, siempre y cuando nombreurl sea un string, que tiene toda la pinta.

Inicio Pagina

WebPerformance
Starting Member


6 Posts
Posted - 26 Nov 2007 :  22:45:15  Ver perfil  Enviar e-mail
Hola hola..
Yo haria esto....

<%

Set Conn = server.CreateObjet("ADODB.Connection")

Conn.open "(Nombre DSN)"

ResParametro = request.querystring("delete")

sql = delete * from TABLA where nombreurl like '" & ResParametro & "'"

set rs = conn.execute(sql)

Conn.close
set Conn = nothing

%>

saludos y suerte

Inicio Pagina

foetus
Starting Member

Dominican Republic
18 Posts
Posted - 27 Nov 2007 :  14:05:18  Ver perfil  Enviar e-mail  Visit foetus's Homepage
bueno te aconsejo que primero lo prueves con otro campo, por ej. id (tipo numerico) y mira a ver si funciona, sino, pues verifica que estes pasando correctamente el valor de delete por la barra de dirreciones, podria ser q la igualdad no se encuentre en la base de datos, recuerda que es una igualdad y tiene que encontrar algo si no encuentra lo que le pasas pues dara error a menos que manejes las ecepciones.......

si no fuy claro, pues postea de nuevo, quizas pueda ayudarte....

Inicio Pagina

Khaspah
Starting Member

España
25 Posts
Posted - 30 Nov 2007 :  10:56:17  Ver perfil  Enviar e-mail
Hola a todos, y muchísimas gracias por tantos comentarios.

Me he puesto a "jugar" con todo lo que me habéis dicho y he terminado con este código:

----------------------------------------
<%

DSN="PROVIDER=Microsoft.Jet.OLEDB.4.0;"
DSN=DSN & "DATA SOURCE=" & server.mappath("BASEDEDATOS.mdb") & ";"
DSN=DSN & "USER ID=;PASSWORD=;"

%>

<%

sql = "Delete From TABLA Where codigo = '"&Cstr(Request.Querystring("delete")) &"'"
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open sql, DSN, 3, 3
%>

--------------------------------------------

Ahora me funciona correctamente (me borra el registro que quiero), pero justo después del mensaje que me indica que se ha borrado correctamente intento hacer ésto:

<%
Rs.Close
Set Rs = nothing
%>

Y me pone el siguiente mensaje:

-------------------------------------------
ADODB.Recordset error '800a0e78'

La operación no está permitida si el objeto está cerrado.
-------------------------------------------

¿Dónde está el problema?

Os agradezco de nuevo vuestra ayuda. Poco a poco voy entendiendo la lógica que encierra todo esto... Inicio Pagina

foetus
Starting Member

Dominican Republic
18 Posts
Posted - 30 Nov 2007 :  14:34:42  Ver perfil  Enviar e-mail  Visit foetus's Homepage
bueno creo que tu problema es que cierras el objeto antes de limpiarlo, porque no lo limpias y despues lo cierras. :D

Asi....
<%
Set Rs = nothing
Rs.Close
%>

no asi...

<%
Rs.Close
Set Rs = nothing
%>

lo que sucede es que cuando cierras el objeto ya no le puedes asignar nada, incluso si estas vaciando el objeto,....

espero que esto te funcione......

www.selda.3a2.com

Inicio Pagina

Khaspah
Starting Member

España
25 Posts
Posted - 30 Nov 2007 :  15:12:41  Ver perfil  Enviar e-mail
Buenas de nuevo...

Ya lo había intentado y tampoco funciona...

Si quito la sentencia completa (el set nothing y el close) ya no me da mensaje de error. Interpreto que, al borrarse, el objeto "se cierra" inmediatamente (o deja de existir), así que ya no es necesario cerrarlo.

¿Es eso cierto? No me gusta la idea de dejar nada sin cerrar... Si alguien me pudiera confirmar que no hay problema, se lo agradecería mucho.

:-)Inicio Pagina

foetus
Starting Member

Dominican Republic
18 Posts
Posted - 30 Nov 2007 :  18:43:33  Ver perfil  Enviar e-mail  Visit foetus's Homepage
bueno creo que yo tambien me confundi, me toco hacer algo parecido hace un momento y me dio error :D , solo haz SET RS= NOTHING, y listo el objeto queda bacio sin nada, o puedes probar cerarlo.....

Inicio Pagina

Khaspah
Starting Member

España
25 Posts
Posted - 03 Dec 2007 :  15:52:18  Ver perfil  Enviar e-mail
Efectivamente, el set rs = nothing me permite realizarlo.

¡Muchas gracias!

:-)Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar