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

Error de update

Estas en el tema de Error de update en el foro de ASP Clásico en Foros del Web. Hola: estoy recibiendo este error cuando intento hacer un update. ¿A qué se debe? Muchas gracias Ernesto Graf [email protected] [email protected] La web de Osiris- WO ...
  #1 (permalink)  
Antiguo 05/07/2003, 13:06
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 4 meses
Puntos: 998
Error de update

Hola:
estoy recibiendo este error cuando intento hacer un update. ¿A qué se debe?
Muchas gracias
Ernesto Graf
[email protected]
[email protected]

La web de Osiris- WO

-------------------------------------------------
Microsoft JET Database Engine (0x80004005)
La operación debe usar una consulta actualizable.
-------------------------------------------------
  #2 (permalink)  
Antiguo 05/07/2003, 16:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Ese es un error de permisos, verifica que la carpeta donde tienes alojada tu DB cuente con permisos de W/R(Escritura/Lectura), podría ser también otra cuestión de la variable %temp, pero no lo creo.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 07/07/2003, 02:18
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Eso te da porque la consulta no es actualizable.
Imagina este recordset
rs.open "select grupo, count(*) as cuantos from usuarios group by grupo", cnn

rs.edit
rs("cuantos") = 30
rs.update

No tiene sentido, verdad? Porque es una consulta NO ACTUALIZABLE, es decir, los datos a los que accedes no tienen el formato de registro de la tabla original.
Esto también ocurre en ciertas consultas que obtienen datos de varias tablas.

Si quieres, pon aquí la fuente de tu consulta.

Un saludo.
  #4 (permalink)  
Antiguo 11/07/2003, 22:12
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 4 meses
Puntos: 998
Hola:
lamento la demora pero en estos últimos días no pude conectarme a Internet.

u_goldman... problema de los permisos no es, tiene permisos de W/R

AlexNV... te explico lo que estoy intentando hacer... es un sistema de usuarios en donde los mismos puedan cambiar su contraseña... lo estoy haciendo como una práctica, ya que estoy dando mis primeros pasos con las BD y asp.
La BD que uso es en access, con 3 campos: Id (clave primcipal-autonumérico), clave_usuario y nombre_usuario (ambos tipo texto).
Antes definí la variable session("nombre") que es igual a nombre_usuario.
Aquí te mando el código fuente que me da el error.
Muchas Gracias por la ayuda

Ernesto Graf
[email protected]
[email protected]

La web de Osiris- WO

***********************************
<%
nombre= session("nombre")
contrasena= Request.Form("contrasena1")

Set Conn = Server.CreateObject("ADODB.Connection")
conn.open= "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data
Source="&server.mappath("base.mdb")

sSQL="Update usuarios_autentificacion set clave_usuario='" & contrasena & "'
Where nombre_usuario='" & nombre & "'"

set RS = Conn.Execute(sSQL)
%>
<div align="center">Registro Actualizado</div>
<div align="center"><a href="principal.asp">Volver</a></div>
<%
Conn.Close
%>
***********************************
  #5 (permalink)  
Antiguo 12/07/2003, 07:47
Avatar de vlah  
Fecha de Ingreso: enero-2002
Mensajes: 254
Antigüedad: 22 años, 5 meses
Puntos: 0
update

<%
<--se hace la conexion a la base de datos-->

despues deberias ver si el usuario existe, y hacer referencia ah ese registro..


sSQL= select * from tblUsuarios where NomUsuario=' " & <la variable de session> &'

es una manera de autentificar al usuario....


.........

ahora si vas a cambiar el password..(me voy ha brincar codigo.)


<%Rs("clave")=request.form("contraseña1")
Rs.update
%>

espero haberte ayudado..
__________________
<<<<VLAH>>>>> :-D
  #6 (permalink)  
Antiguo 15/07/2003, 00:44
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 4 meses
Puntos: 998
Hola vlah , probé tu código pero me sigue dando errores , ahora es
---------------------------------------
ADODB.Recordset (0x800A0CB3)
El Recordset actual no admite actualizaciones. Puede ser una limitación del proveedor o del tipo de bloqueo seleccionado.
---------------------------------------

He buscado en la ayuda del IIS 5 que es eso del bloqueo, y me ha remitido al glosario... pero en dicho glosario no dice nada... yo pregunto... ¿porqúe la gente de Microsoft hace entradas que luego no llevan a nada?
Bueno, si alguien me puede ayudar con este problema estaría muy agradecido, ya no se más por donde agarrar

Ernesto Graf
[email protected]
[email protected]

La web de Osiris- WO
  #7 (permalink)  
Antiguo 15/07/2003, 01:48
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Prueba sin devolver el recordset. A lo mejor es eso.
Conn.Execute sSQL

en vez de
set RS = Conn.Execute(sSQL)

Es lo unico que se me ocurre.
NO obstante, para comprobar el query, mira que contiene la variable sSQL e intenta ejecutarla en el analizador de consultas de Access.
  #8 (permalink)  
Antiguo 15/07/2003, 07:10
Avatar de vlah  
Fecha de Ingreso: enero-2002
Mensajes: 254
Antigüedad: 22 años, 5 meses
Puntos: 0
pues mira creo que, deberias ver los permisos que le has dado a tu base de datos asi como los tipos de datos, mira pues si quieres puedes mandarme el codigo yo lo checo, y te digo.. hasta luego.
__________________
<<<<VLAH>>>>> :-D
  #9 (permalink)  
Antiguo 18/07/2003, 01:15
Avatar de webosiris
Moderador egiptólogo
 
Fecha de Ingreso: febrero-2002
Ubicación: Luxor, Egipto
Mensajes: 10.725
Antigüedad: 22 años, 4 meses
Puntos: 998
Hola...
aquí mando el código a ver si me pueden ayudar...
Cita:
<%
'Instanciamos y abrimos nuestro objeto conexion
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open= "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source="&server.mappath("base.mdb")

'Ahora creamos la sentencia SQL
sSQL=" select * from usuarios_autentificacion where nombre_usuario='" & session("nombre") &"'"

set RS = Conn.Execute(sSQL)

%>
<%Rs("clave_usuario")=request.form("contrasena1" )
Rs.update

%>

<h1><div align="center">Registro Actualizado</div></h1>
<div align="center"><a href="principal.asp">Volver</a></div>

<%
'Cerramos el sistema de conexion
Conn.Close
%>
El error me lo da el la línea 15, la que puse en negrita.
Los permisos los he comprobado una y otra vez, tanto la carpeta donde están los archivos como los archivos mismos tienen permisos W/R
Un saludo
Ernesto Graf
[email protected]
[email protected]

La web de Osiris- WO
  #10 (permalink)  
Antiguo 18/07/2003, 02:57
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Prueba a poner Rs.Edit antes de asignar el nuevo valor al campo.
  #11 (permalink)  
Antiguo 18/07/2003, 08:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, ya que no funciona así porque no cambiarlo un poco?

<%
'Instanciamos y abrimos nuestro objeto conexion
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open= "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source="&server.mappath("base.mdb")

Conn.Execute("UPDATE usuarios_autentificacion SET clave_usuario= " & request.Form("contrasena1") & " WHERE nombre_usuario= '"&session("nombre")&"'")
%>

<h1><div align="center">Registro Actualizado</div></h1>
<div align="center"><a href="principal.asp">Volver</a></div>

<%
'Cerramos el sistema de conexion
Conn.Close
%>
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 12:56.