Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ADO
 updateable query... Otra vez!
 Foro Bloqueado  Tema Bloqueado
Pag.:     1  2 


Autor Temas
Fëanor
Starting Member

Argentina
37 Posts
Mensajes - 28 Aug 2002 :  01:08:48  Ver Perfil  Enviar Email
Si, ya se que esta pregunta ya la hicieron mil veces, pero me da este error y no puedo solucionarlo:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

Estoy usando IIS e intentando hacer un Update en una Data Base de Access.
En otras respuestas del foro, se dijo que era un error de permisos. Yo abri la ventana de IIS, y le puse a la carpeta en la que se encuentra la DB el permiso "write". Eso es todo lo que se puede hacer? que otras causas puede tener ese problema?
gracias


alexo
Starting Member

Mexico
26 Posts
Posted - 28 Aug 2002 :  20:34:37  Ver perfil  Enviar e-mail
Posibles causas:
1) Revisa los permisos del archivo mdb
2) Checa el tipo de Qry que estas usando (snapshot o dynamic o static o dynaset)
Necesito mas datos para poderte ayudar ..

Alejandro EInicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 29 Aug 2002 :  00:39:25  Ver perfil  Enviar e-mail
Los permisos del archivo MDB estan correctos.
No estoy muy seguro a que te refieres en el punto 2.
Que otra informacion necesitas que te de?
Muchas Gracias

Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 29 Aug 2002 :  14:55:31  Ver perfil  Enviar e-mail
Se pueden realizar modificaciones de formas diferentes, ¿qué objeto usas?. Alexo te comenta el tipo de Qry, se refiere al cursor, no todos permiten actualizaciones.
Lo mejor es que muestres el código.

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 30 Aug 2002 :  04:43:41  Ver perfil  Enviar e-mail
Aca esta el codigo que utilizo.
sql="UPDATE tpaises SET ejercito = " & result("ejercito")+result("ejercito")/10 & " WHERE idpais= '"
sql= sql & result("idpais")
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db\base.mdb")
Set result = con.Execute(sql)

El error me lo da en el execute...

Edited by - Fëanor on 30 Aug 2002 04:44:41Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 30 Aug 2002 :  12:02:47  Ver perfil  Enviar e-mail
Supongo que "result" es un recordset, pero date cuenta que estás intentado llenarlo con el resultado de una consulta de inserción , que no devuelve ningún valor. Una de dos, o actualizas la tabla directamente desde el recordset, o ejecutas la consulta de inserción y actualizas luego el contenido del recordset.

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 30 Aug 2002 :  16:08:10  Ver perfil  Enviar e-mail
No se si entendi bien lo que me decis... pero los datos del result (idpais y ejercito) los obtenia de una consulta previa que si funciona... si no es esto a lo que te referis... podrias por favor explicarme un poco más lo que queres decir? por si no se dieron cuenta soy bastante nuevo en esto :)
Muchas gracias!

Inicio Pagina

dos
Moderator

España
1575 Posts
Posted - 30 Aug 2002 :  16:55:46  Ver perfil  Enviar e-mail
que pongas esto y te funcionara:
sql="UPDATE tpaises SET ejercito = " & result("ejercito")+result("ejercito")/10 & " WHERE idpais= '"
sql= sql & result("idpais")
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db\base.mdb")
con.Execute(sql)


Explicación de porque te funcionará asi: existen dos tipos de consultas SQL: de selección (select) y de actualización (insert into, delete, update), mirate el tutorial de SQL.
Pues bien, solo las consultas de actualización devuelven datos que puedan ser metidos en un recordset. En el resto de caso has de ponerlo tal y como esta en el codigo de arriba.

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 30 Aug 2002 :  19:11:50  Ver perfil  Enviar e-mail
Gracias a todos por las respuestas.
dos, puse el codigo que me dijiste, pero me da el mismo error... tenes idea de que otra cosa puedo probar?
muchas gracias

Inicio Pagina

gasparina
Starting Member

España
20 Posts
Posted - 31 Aug 2002 :  15:13:07  Ver perfil  Enviar e-mail  Visit gasparina's Homepage
Creo ke el problema se encuentra en ke iria asi en la sentencia SQL ' " & query & " '
que tienes mal ese apartado...
:) espero ke haya sido eso
salu2

GASPARINAInicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 31 Aug 2002 :  23:52:17  Ver perfil  Enviar e-mail
Cambie la secuencia a:
sqltxt="UPDATE tpaises SET ejercito = '" & result("ejercito")+result("ejercito")/10 & "' WHERE idpais= '" & result("idpais") & "';"
Pero el error es el mismo... ayuda!!

Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 02 Sep 2002 :  17:06:58  Ver perfil  Enviar e-mail
Yo no creo que el error esté en las comillas, supongo que los campos "ejercito" e "idpais" son numéricos, así que no deben ir con comillas (aunque algunos gestores tragen).
Yo en tu caso probaría a ejecutar la SQL desde un objeto command, quizá la conexión sea demasiado escrupulosa.

comando = server.CreateObject("ADODB.Command")
comando.ActiveConection = con
comando.CommandText = sql
comando.execute

Mantenme al tanto de lo que pasa, me interesa.

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 02 Sep 2002 :  19:28:06  Ver perfil  Enviar e-mail
Buho_Nero:
He probado lo que me dijiste, y me tira el siguiente error:
Object doesn't support this property or method: 'ActiveConnection'
/karakeiya/tick.asp, line 24

Se te ocurre que puede haber pasado?
(En tu codigo lo habias escrito como 'ActiveConection'(una sola n) pero ninguna de las dos funciona)

Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 03 Sep 2002 :  13:46:05  Ver perfil  Enviar e-mail
Es con dos "n", culpa mía.
Te puse sólo el código del Command, necesita una conexión abierta.

sql="UPDATE tpaises SET ejercito = " & result("ejercito")+result("ejercito")/10 & " WHERE idpais= '"
sql= sql & result("idpais")
Set con = Server.CreateObject("ADODB.Connection")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db\base.mdb")
set comando = server.CreateObject("ADODB.Command")
comando.ActiveConnection = con
comando.CommandText = sql
comando.execute
con.close
set comando = nothing
set con = nothing

Lamento los errores de sintáxis, últimamente me toca programar en otros lenguajes y me lio bastante.

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 03 Sep 2002 :  21:57:13  Ver perfil  Enviar e-mail
Probe lo que me dijiste, pero me sigue tirando un error de updateable query.
Te cuento tambien, que subi el codigo a un servidor de internet (brinkster) y ahi funcionaba perfecto, asique estoy seguro que el problema esta en la configuracion del IIS.
Alguien me podria decir por favor como tengo que configurar todo lo que necesite del IIS para que funcione bien?

Inicio Pagina

Fëanor
Starting Member

Argentina
37 Posts
Posted - 04 Sep 2002 :  02:06:28  Ver perfil  Enviar e-mail
Bueno, por si a alguien le interesa, logre arreglar este error!!!!
El problema, es que la base de datos estaba dentro del directorio wwwroot, el cual es read-only y no puede ser cambiado! asique lo unico que hice fue poner la base de datos aguera, y listo!!!
Gracias a todos por su ayuda!

Inicio Pagina

Hay 2 Páginas de Mensajes:     1  2   
 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