jump to navigation

La operación debe usar una consulta actualizable… febrero 14, 2006

Posted by NaXo in Bases de datos, PHP, Programación.
trackback

Esta mañana en el trabajo he tenido que resolver un problema con la base de datos de prensa, una BD en Access con la que se interactúa a través de una aplicación web programada en PHP. He tardado más de lo que me hubiese gustado en resolverlo, así que lo comparto por si a alguien le sucede alguna vez, que no pierda tanto tiempo como yo.

El problema se presentaba cuando intentaba llevar a cabo la modificación del contenido de un registro. En vez de realizarse la actualización saltaba el siguiente mensaje de error:

SQL error: [Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable…

Lo curioso es que la aplicación llevaba funcionando con normalidad algo más de un año, pero, tras un fallo en el servidor, algo debió trastocarse. Las operaciones de lectura funcionaban a la perfección, así que debía tratarse de un error de permisos.

Buscando por internet descubrí que solía darse en máquinas que corrían sobre el sistema operativo Windows XP, como es el caso, y encontré varias soluciones. Una de ellas, y la que yo utilicé, comprendía la reconfiguración de los permisos de la carpeta donde se ubica la base de datos (también pueden modificarse únicamente los permisos del fichero *.mdb de la BD) para los usuarios que acceden a través de internet. Para ello basta seguir los siguientes pasos:

  • Asegurarnos de que tenemos desactivada la opción Utilizar uso compartido simple de archivos, accesible a través del menú Herramientas > Opciones de carpeta… > Ver desde cualquier carpeta. Podremos volver a activarlo una vez terminemos con la configuración de los permisos.
  • Navegar hasta la carpeta donde se encuentra la BD y sobre dicha carpeta, pulsar el botón secundario, acceder a Propiedades, pestaña Seguridad y pulsar el botón Agregar.
  • En la ventana que se abre, añadir el usuario IUSR_nombre_maquina. Por ejemplo, si la máquina es INFORMATICA, el usuario a añadir sería IUSR_INFORMATICA. Aceptamos.
  • Vemos que se ha añadido el usuario Cuenta de usuario para internet. Seleccionar y marcar Control total.

Con esto se soluciona el problema de los permisos de escritura y desaparece el mensaje de error, actualizándose correctamente los registros.

Si se desea, puede volver a activarse la opción Utilizar uso compartido simple de archivos, que desactivamos para tener acceso a la pestaña Seguridad en las propiedades de la carpeta.

😉

Comentarios»

1. manuel - marzo 7, 2006

muchas gracias…

2. NaXo - marzo 8, 2006

De nada. Me alegra que te haya sido de utilidad😉

3. Guillermo - marzo 10, 2006

Muchas gracias… me solucionó de inmediato el problema, te pasaste.
Adios.

4. Fw190g - marzo 14, 2006

Pues a mi, me sigue dando el mismo mensaje, a pesar de hacer lo que comentas…Recuerdo que ya me paso esto en otra ocasion y efectivamente se corregia de esta manera, pero en mi caso actual, no me funciona….Si sabeis de que puede ser…

5. NaXo - marzo 14, 2006

Si has establecido los permisos para la carpeta, comprueba en la pestaña Seguridad del archivo .mdb que los permisos sean los correctos. Si es así debería funcionar.

Una solución más radical sería seleccionar TODOS en el cuadro Nombres de grupos o usuarios y finalmente, debajo, en Permisos de Administradores marcar Control Total. Aunque yo soy contrario a esta solución, ya que dándole Control Total únicamente al Usuario de Internet debería bastar.

6. Xem - octubre 20, 2006

Me has salvado la vida

7. carajas - enero 9, 2007

te debo un jamon

8. CEGA - enero 31, 2007

Gracias amigo, tu informacion me fue muy util, quien pensaria que por esas pequeñas cosas un programa no funcione. ja ja

9. pato_b - marzo 15, 2007

Infinitas gracias …….
Mi trabajo dependía de esto

10. kayleigh - marzo 20, 2007

Hola, en la web que estoy trabajando me pasaba lo mismo, lo corregi en mi casa y todo funciona ok. Pero al subir los archivos al servidor me sigue dando el mismo error. No tengo acceso a las carpetas del servidor, pero el archivo mdb tiene todos los permisos, pensé que con eso sería suficiente. ¿Como podria solucionarlo?
Saludos y gracias.

11. marjose - marzo 25, 2007

Muchas gracias!!!! tu solución ha funcionado perfectamente. Se agradece que la compartas

12. Marc - marzo 26, 2007

Hola amigo, me econtré con el mismo problema que tu y gracias a tu post… logré solucionarlo.

Tengo otra cuestión, sabes como puedo recoger el último ID insertado en un campo autonumérico? en musql existe el mysql_insert_id() que después de un INSERT te devuelve el número que se ha insertado en el autonumérico.. pero usando la conexión ODBC en PHP no encuentro nada similar…

Mil gracias!!

13. NaXo - marzo 26, 2007

Pues no tengo servidor montado para probarlo, pero según el manual de php puedes usar la misma función. Consulta esta dirección:

http://es2.php.net/mysql_insert_id

Salu2!

14. Elkin Diaz - marzo 29, 2007

lei la misma solucion de un foro de la universidad de sevilla a un tal luis. pero ambos lo explican muy bien, muchas Gracias, llevaba 3 dias varado por ese pinche problema!

en forma local ya me funciono bien, pero estoy haciendo un servicio web en .Net, enlazado(la interfaz) con componentes de datos de flash MX, para montarlo en Internet, sera que hay que hacerlos mismos pasos o funcionara sin problemas?.

si alguien me pudiera ayudar o quisiera compartir informacion de estos temas conmigo….escribir a elkin_digo@yahoo.es

15. veronica - abril 13, 2007

Genio!!!! tenia el error justo a la hora de salidad del trabajo…gracias

16. Cesar Avalos. - abril 21, 2007

Muchisisimas gracias, ya tenia 15 dìas buscando una soluciòn. y Gracias a ti lo he resuelto.

17. Celso Gonzales - junio 10, 2007

Hola, igualmente desde Peru, te agradezco mucho, pues pensé que era un problema de las diferentes versiones de PHP.

Muchas Gracias

18. Julian Sanchez - junio 18, 2007

Disculpa, ya aplique la solucion radical que mencionabas antes, y no me deja de salir el error, sera que al trasladar la base a un win98 esto sigue ocurriendo?
Gracias

19. Nilson - julio 9, 2007

Muchas gracias por la solución , ya me estaba poniendo verde con el problema.
Cabe acotar que yo utilizaba asp.net con BD Access

20. Noe Vargas - julio 26, 2007

Realize la modificación a los cambios como lo comenta Luis, hasta ahora el problema sigue apareciendo. Tengo access 2003, el mensaje de error es el mismo …Ya asigne permiso de acceso total a medio mundo y sigue el mismo problema.

Por favor si alguién tiene otra posible solución haganmelo saber…

Noé Vargas
México

21. Noe Vargas - julio 26, 2007

Realize la modificación a los permisos como lo comenta Luis, hasta ahora el problema sigue apareciendo. Tengo access 2003, el mensaje de error es el mismo …Ya asigne permiso de acceso total a medio mundo y sigue el mismo problema.

Por favor si alguién tiene otra posible solución haganmelo saber…

Noé Vargas
México

22. jose - agosto 26, 2007

Hola!
Amigo, yo he colocado IUSR_jocd en donde “jocd” es el nombre del equipo y no deja colocarlo, saca una ventana que hace referencia de nombre no encontrado, obvio si es algo que se esta agregando o en otro caso, busca algo para hacer el agregado y no lo consigue.
saludos.

23. daniel - diciembre 9, 2007

a mi me dice lo mismo q a jose

24. Susanne - enero 25, 2008

Tres nenas te mandamos un beso donde mas te guste.
Nos salvaste la vida!

25. Sebastian - febrero 15, 2008

Excelente el dato y la descripción. Muchas gracias. Un abrazo.

26. Stran - abril 7, 2008

Estimado, vinculo tablas de un DWH en Oracle en Access 2003, hasta la semana pasada hacía consultas sin ningún problema pero el día de hoy me está apareciendo el error, seguí los pasos pero al parecer no es la solución. ¿Tu crees que puede ser alguna confifuración de la BD Oracle?

27. Miguel - junio 23, 2008

Como aporte, la pestaña de seguridad sólo se muestra en particiones NTFS

Saludos

28. yey - julio 17, 2008

me sigue saliendo el mismo error pero lo tengo en windows XP professional, sera por eso?, por que si no instalaria en windows 2003 server.

gracias.

29. yeti - septiembre 15, 2008

Gracias!!! por la ayuda, me anda barbaro

30. Sebastian palma - noviembre 13, 2008

WOooooo.. buenisima amigazoo.. wee muxo en una tarea en la cual tenia q ingresar datos .. estoi en asp,, con tus intrucciones me salio y too corre bn .. t pasaste!

31. José Luis - marzo 3, 2009

Muchas gracias, va perfecto. Si no llega a ser por tu ayuda, me hubiese pegado en esta tontería media mañana con su correspondiente cabreo…

32. Al - marzo 16, 2009

Mil gracias por el tip… empezaba a buscar la solucion y encontre tu post… Grandioso! me ahorraste un buen de tiempo!

33. Max - julio 24, 2009

Muchas gracias, la verdad me paso lo mismo, gracias al post, pude solucionar mi problema muy rapidamente

34. JJ - agosto 9, 2009

Gracias!!! gracias gracias gracias…

35. Betolopez - agosto 9, 2009

muchas gracias, muy buena explicacion, vaya hasta q pude encontrar la solucion, gracias men!!

36. Mister S - septiembre 15, 2009

precioso post. por fin pude actualizar los registros de la base. gracias.

37. CUAC - marzo 18, 2010

Estoy trabajando con BD en Paradox en una aplicación hecha con Visual Studio .NET 2003 pero al actualizar los registros me manda el siguiente error: ex.Message”ERROR [HY000] [Microsoft][Controlador ODBC Paradox] La operación debe usar una consulta actualizable.”
Ya hise lo que mencionas y no se solucionó el problema, si tienes alguna sugerencia te la voy a agradecer infinitamente.

38. skobator - abril 9, 2010

Muchisimas gracias, me funcionó a la perfección.

39. Eduin1178 - abril 11, 2010

Funcionó bien pero hay que darle permiso a todos los usuarios..

Que tanto riesgo tiene esto???

Espero que no sea mayor.

Gracias de todas formas.

40. Eduin1178 - abril 11, 2010

Excelente

41. Morbius - junio 10, 2010

OK, Correcto!!!

42. WALLY - junio 29, 2010

NONONONONO NOOOOOOO GRANDEEEEEEE SOS GRANDEEEEEEEEE VIEJO ENTENDES LO QUE TE DIGO GIGANTEEEE PAPA

43. jbruna - septiembre 9, 2010

Grande viejito!!!… solucione mi problema con tus recomendaciones…

Tatiana - octubre 4, 2010

Muchisimas gracias, acquí encontré solucion inmediata en vez de perder tiempo. Y bién, enseguida me dí cuenta porque en SQL SERVER la misma instruccion funciona.
Para los que siguen: es importante marcar “control total” en los permisos, agregandole más permisos a mi no me ha funcionado.

44. Tatiana - octubre 4, 2010

Gente! Quien sigue con el problema en el servidor, la solucion es: boton derecho sobre la carpeta y vamos a “Compartir y seguridad” y ahi a la solapa Compartir WEB (“WEB Sharing”). Ahora en el combo seleccionamos nuestro sitio – y ya esta!

45. Edu - noviembre 16, 2010

Muchas gracias me resolvio el problema al instante

46. marvin - diciembre 10, 2010

wow….muchas gracias..he pasado horas buscando la solucion….eres grosso

47. Andy Romero - enero 22, 2011

Muchisimas Gracias… fue de gran ayuda… Muchos éxitos.

48. Joseba - abril 4, 2011

Muchas gracias, me has ahorrado un buen tiempo de investigación😉

49. fredy - mayo 31, 2011

Increible..pero cierto. todo un dia buscando hasta que encontre este post, mil gracias.

50. alvarinho19 - diciembre 6, 2011

gracias brother !!
saludos desde Perú
Whoop!

51. juan - febrero 29, 2012

Muchas gracias amigo, te as ganado un pedacito de gloria con este dato…

saludos que estes bien

52. Carmen - julio 31, 2012

Hola soy nueva en esto y quiero hacer una actualización a una tabla excel y sigo teniendo el mismo error. Ya realice la opcion “Compartir y seguridad” y IUSR_nombre_maquina no me dejo realizarlo mi maquina. Tengo Windows XP y excel 2007
Gracias se agradece cualquier ayuda

53. Mara Ares (@maraares) - agosto 30, 2012

Yo tuve este error en AgendaXP, un freeware. Lo solucioné dando click derecho sobre el ejecutable y en la pestaña Compatibilidad seleccionar Windows XP Service Pack 3.

54. yukito - noviembre 7, 2012

Yo lo solucioné en Panel de control -> Herramientas administrativas -> Origenes de datos (ODBC) -> Pestaña DSN del sistema -> Configurar -> Opciones… -> Desactivar opcion Sólo Lectura

55. Www.Martinscott.Com - julio 13, 2013

Hello, just wanted to mention, I enjoyed this post.

It was funny. Keep on posting!

56. http://www.nliprograms.com/treatment-method - julio 28, 2013

I blog often and I seriously thank you for your content.
This article has really peaked my interest. I’m going to take a note of your website and keep checking for new details about once a week. I subscribed to your Feed too.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: