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

Ayuda con Sintaxis asp

Estas en el tema de Ayuda con Sintaxis asp en el foro de ASP Clásico en Foros del Web. Hola, Me da error al ejecutar una página .asp en esta linea: Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") ...
  #1 (permalink)  
Antiguo 01/12/2002, 05:40
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Ayuda con Sintaxis asp

Hola,

Me da error al ejecutar una página .asp en esta linea:

Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = '" & Request.QueryString("id") & "' ")

Este es el error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Instrucción SQL no válida; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.

/plantilla_mail/baja.asp, line 5

¿Pueden ayudarme por favor?
  #2 (permalink)  
Antiguo 01/12/2002, 14:58
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 4 meses
Puntos: 2
Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = '" & Request.QueryString("id") & "' ")

entre delete y from debes colocar los campos que quieres seleccionar, si deseas seleccionarlos todos coloca *
__________________
Manual de ASP Avanzado ;-)
  #3 (permalink)  
Antiguo 01/12/2002, 15:20
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
He colocado el * y me da este error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios.

/plantilla_mail/baja.asp, line 5

¿Tiene esto algo que ver con que el campo id es autonumérico?. ¿Cómo debería de poner si es pr eso?

Muchas gracias
  #4 (permalink)  
Antiguo 01/12/2002, 15:46
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 4 meses
Puntos: 29
[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios. --> este error me da que pensar, puede ser que el email que esté en el querystring no coincida con el id que también está en el querystring, es decir, si tienes esta tabla:

id | email
1 | [email protected]
2 | [email protected]
3 | [email protected]


Puede ser que tengas esta dirección: pagina.asp?id=1&[email protected]

Te recomiendo usar sólo un campo, o el id o el email.

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 01/12/2002, 16:13
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Pregunta

¿Pero como puede ser eso posible?, al recorrer un registro cómo me puede pasar eso?

Quiero utilizar los 2 para hacerlo más seguro el que nadie que intente con id aleatoria spueda borrarme registros en mi base de datos.
  #6 (permalink)  
Antiguo 01/12/2002, 16:26
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 4 meses
Puntos: 29
no tengo ni idea, pero primero comprueba si es cierto lo que te he comentado en el msg anterior.

Puedes también hacer esto:

pagina.asp?id=5&password=UNACLAVEQUETÚELIJAS

pagina.asp:

<%
clave=request.querystring("password")

if clave="UNACLAVEQUETÚELIJAS" then
'si se cumple la condición de que la password es correcta entonces borras el registro con id 5
else
'sino mensaje de error
nada="error, password incorrecta"
end if

response.write nada
%>

así es aún mucho más seguro y te ahorras de errores.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Última edición por CHuLoSoY; 01/12/2002 a las 16:28
  #7 (permalink)  
Antiguo 01/12/2002, 16:43
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 4 meses
Puntos: 2
si el id es autonumerico, quitale las comillas simples

Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = " & Request.QueryString("id") & " ")


saludos
__________________
Manual de ASP Avanzado ;-)
  #8 (permalink)  
Antiguo 01/12/2002, 16:50
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 4 meses
Puntos: 1
Cita:
Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = " & Request.QueryString("id") & " ")
<%
varid=Request.QueryString("id")
varemail=Request.QueryString("email")
Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = "&varemail&" AND id = "&varid&" ")
%>

Personalmente prefiero definir antes las variables, eso hace el codigo mas legible y evita los fallos de las comillas simples y dobles.
Asi sabemos mejor que fallla, si la SQL o las definiciones anteriores, fijandonos en el error de la linea:
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #9 (permalink)  
Antiguo 02/12/2002, 08:08
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 22 años, 5 meses
Puntos: 0
primero:

Set Ob_RS=Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = '" & Request.QueryString("id") & "' ")

eso no te devuelve un recordset.

segundo:
Si id es numerico creo que debes quitar las comillas simples.
tan solo pon esto:

Conn.Execute ( " DELETE FROM newsletter where email = '" & Request.QueryString("email") & "' AND id = " & Request.QueryString("id") )

y cuentame como te fue.
  #10 (permalink)  
Antiguo 02/12/2002, 15:49
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Me da error:

ADODB.Recordset error '800a0e78'

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

/plantilla_mail/baja.asp, line 6

No entiendo como no me funciona
  #11 (permalink)  
Antiguo 02/12/2002, 17:42
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 4 meses
Puntos: 1
Muy facil, estas intentando mostrar o actualizar un recodset y te ocurreo lo siguiente.

Te has olvidado de abrirlo
rs.open SQL, oconn,1,2

o bien ya lo has cerrado:
<%rs.close%>

y luego intentas visualizar datos:
<%=rs("campo")%>

o actualizar datos
<%
rs("campo")=variable
rs.update
%>


Revisa a ver cual de estas cosas te pasa.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #12 (permalink)  
Antiguo 03/12/2002, 08:51
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
No me borra el registro

Hola,

Se me habia olvidado de abrir el recordset.
Ya lo he abierto y no me da por fiinnn no me da ningun error pero el registro no se me borra de la base de datos.

Los datos que le paso a baja.asp son:

http://www.xxx.com/plantilla_mail/baja.asp?id=119 & [email protected]

Y esta es lo que pone en la barra de direcciones al ir a baja.asp:

http://www.xxx.com/plantilla_mail/[email protected]

¿Que pasa ahora? Es pa volverse loco

Gracias
Laika
  #13 (permalink)  
Antiguo 03/12/2002, 09:02
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 4 meses
Puntos: 1
Cita:
http://www.xxx.com/plantilla_mail/baja.asp?id=119%20&%[email protected]
Ves ese %20 ?, es el simbolo del espacio ASCII, al construir la URL has dejado un espacio en los parametros del querystring.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #14 (permalink)  
Antiguo 03/12/2002, 09:29
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
espacio en el query string

¿Donde esta el espacio que me crea aquí? heprobado de varias maneraspero me llega con espacios (%20)

<a href='http://www.midominio.com/plantilla_mail/baja.asp?id="&Rs.Fields("id").Value&" & email="&Rs.Fields("email").Value&"'>aqui.</a>

Gracias
Laika
  #15 (permalink)  
Antiguo 03/12/2002, 09:45
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
poné así:


<a href='http://www.midominio.com/plantilla_mail/baja.asp?id="&Rs.Fields("id").Value&"&email="&Rs.Fields("email").Value&"'>aqui.</a>


(la parte en negrita fue modificada)
  #16 (permalink)  
Antiguo 03/12/2002, 09:53
Avatar de xBlaze  
Fecha de Ingreso: julio-2002
Ubicación: Lemuria
Mensajes: 87
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola:

Cita:
<a href='http://www.midominio.com/plantilla_mail/baja.asp?id="&Rs.Fields("id").Value&" & email="&Rs.Fields("email").Value&"'>aqui.</a>
El espacio esta en: ...Rs.Fields("id").Value&" & email="&Rs...
----------------------------------------------^


donde termina 'Valiue' luego sumas con '&' inicia una cadena con (") y luego pones un espacio que no debe de exisitir, despues pones un (&) y otro espacio que tambpo debe de existir, lo que tu haces te genera:

<a href='http://www.midominio.com/plantilla_mail/baja.asp?id=34 & [email protected]'>aqui.</a>

Donde 34 y el correo son lo que genere el codigo ASP, pero el problema es despues del 34 (...34 & email=...) debe de ser (...34&email=...) sin espacios, si exite algun otro que por los saltos de linea no se vean, tambien quitalos.

Espero y te sirva.
__________________
Darth xBlaze
Gerente de Sistemas
Arisoft
  #17 (permalink)  
Antiguo 04/12/2002, 09:42
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Muchas gracias a todos,

Por fin me funciona el código.

Laika :cantar:
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 16:47.