PRB: ASP devuelve el error 'La operación debe utilizar una consulta actualizable'

Seleccione idioma Seleccione idioma
Id. de artículo: 175168 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

Puede encontrar el error común siguiente cuando utiliza objetos de datos ActiveX (ADO) con Páginas Active Server (ASP):
Error '80004005' de Proveedor OLE DB de Microsoft para controladores ODBC
[Microsoft] [Controlador de ODBC Microsoft Access 97] La operación debe utilizar una consulta actualizable.

Causa

En este artículo se explican las cuatro causas principales de este error y las soluciones temporales correspondientes. Aunque el artículo hace referencia a las bases de datos de Microsoft Access, la información que se proporciona aquí también se aplica a otros tipos de bases de datos.

Solución

Normalmente se encuentra este error cuando la secuencia de comandos intenta para realizar un ACTUALIZACIÓN o alguna otra acción que modifica la información en la base de datos. Este error se produce porque ADO no puede escribir en la base de datos para una de las razones siguientes:

  1. La razón más común es que la cuenta de invitado para Internet (IUSR_MACHINE), que de manera predeterminada forma parte del grupo "Todos", no tiene permiso de escritura en el archivo de base de datos (.mdb). Para corregir este problema, utilice la ficha Seguridad del Explorador para ajustar las propiedades de este archivo, para que la cuenta de invitado para Internet tenga los permisos correctos.

    NOTA: al utilizar las bases de datos de Microsoft Access con ADO, también es necesario proporcionar a la cuenta de invitado para Internet permisos de escritura en el directorio que contiene el archivo .mdb. Esto es porque Jet crea un archivo .ldb para controlar el bloqueo de la base de datos. También puede necesitar dar permisos de lectura/escritura en la carpeta "Temp", porque Jet puede crear archivos temporales en este directorio.
  2. Una segunda causa de este error es que la base de datos no se abrió con el MODO correcto para escritura. Si realiza el objeto Open on the Connection, utilice la propiedad Mode para indicar los permisos de las conexiones tal como se indica aquí:
    
          SQL = "UPDATE Products Set UnitPrice = 2;"
          Set Conn = Server.CreateObject("ADODB.Connection")
          Conn.Mode = 3      '3 = adModeReadWrite
          Conn.Open "myDSN"
          Conn.Execute(SQL)
          Conn.Close
    
    						
    NOTA: De manera predeterminada, MODE se configura como, que generalmente permite actualizaciones.
  3. Otra causa de este error es que la configuración de "Sólo lectura" se puede comprobar en la página Opciones de este DSN en el Administrador de ODBC.
  4. El último problema y la forma de evitarlo pertenecen a cualquier origen de datos de SQL. El error puede estar causado por instrucciones SQL que infringen la integridad referencial de la base de datos. Estas son algunas de las consultas más comunes que producen un error:
    • El grupo más simple de tratar es el de los que no puede cambiar: consultas de tabla de referencias cruzadas, de paso a través de SQL, de acciones de unión o de actualización (creación de tablas) que tienen las propiedades UniqueValue configuradas en Sí.

    • Otro causa muy común es cuando la unión incluye tablas ODBC vinculadas que no tienen índices únicos. En este caso, no hay ninguna manera de que SQL garantice que los registros son exclusivos en una tabla que tiene campos cuyo valor cambiará con la consulta.

    • Una causa tiene una solución temporal sólida. Si intenta actualizar un campo combinado en el lado "uno" de una consulta "uno a varios", se producirá un error a menos que active las actualizaciones en cascada. De esta manera, delega la integridad referencial al motor JET.

Estado

Este comportamiento es una característica del diseño de la aplicación.

Propiedades

Id. de artículo: 175168 - Última revisión: martes, 14 de junio de 2005 - Versión: 4.1
La información de este artículo se refiere a:
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 4.0
  • Servicios de Microsoft Internet Information Server 5.0
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Palabras clave: 
kberrmsg kbdatabase kbprb KB175168

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com