No se puede actualizar este recordset

No se puede actualizar este recordset

Este recordset no es actualizable error en microsoft access

Hola chicos. Pensaba que todo funcionaba correctamente. Sin embargo, mientras que todos los datos y las consultas se muestran, cuando se trata de cambiar la base de datos que estamos recibiendo “Este conjunto de registros no es actualizable”. No podemos añadir o cambiar ninguna información de la base de datos a través del front-end de Access. Los usuarios tienen datawriter y datareader. La tabla que se está modificando es una tabla vinculada sin clave primaria. En el caso de ciertas bases de datos backend (por ejemplo, Microsoft SQL Server), Access/Jet requiere que la tabla tenga una clave para poder realizar cualquier cambio. Esto tiene sentido, ya que Access quiere emitir una consulta SQL para las modificaciones, pero no puede identificar de forma exclusiva el registro”.
Cuando todo lo demás falla RTFM.    <- Ese enlace es el de Microsoft Docs.    El enlace que has proporcionado habla de Oracle y Access, no de SQL Server, y no es la forma en que quieres hacerlo en cualquier caso.Una clave primaria es una restricción de la tabla, no un índice, aunque sí tiene un índice asociado.    Antes de crear una clave primaria, tienes que comprobar tu tabla Direcciones en SQL Server (preferiblemente con SSMS) y averiguar cuál es la clave primaria real, si es que hay alguna.    Supongo que has vinculado tus tablas utilizando el gestor de tablas vinculadas a través de una conexión ODBC.    El gestor de Tablas Vinculadas hace una conjetura en cuanto a la clave primaria de las tablas de SQL Server, pero no siempre acierta.    Si la tabla de SQL Server tiene una clave que difiere de la de Access, edite la tabla vinculada en Access para que coincida.Si la tabla de SQL Server no tiene una clave primaria, la sintaxis adecuada (simplificada) es:

No se puede actualizar el campo de expresión de acceso no actualizable

Bueno, por ahora, he decidido utilizar un comando SQL INSERT. No estoy seguro de cuál es mejor, pero necesito que los datos se actualicen. Mi objetivo era debido a estar en un bucle recordset, yo iba a utilizar la actualización de registros nativos.
En primer lugar, tienes que decidir si quieres ACTUALIZAR un registro existente (eso es lo que ibas a hacer en tu código, ¿verdad?) o INSERTAR un nuevo registro con una sentencia INSERT. Porque si “necesitas tener los datos actualizados”, supongo que puedes hacer INSERTAR un nuevo registro y BORRAR el existente, pero ¿por qué querrías hacer eso?
Gracias Andy. Mi código que terminé usando es similar al que acabas de proporcionar. Debido a que mi código fue la actualización dentro de un Recrodset yo estaba tratando de utilizar el conjunto de registros para actualizar a sí mismo frente a utilizar un código de SQL UPDATE.

Dynaset (actualizaciones inconsistentes)

He creado una tabla en una base de datos de SQL Server 2017. Luego he creado un formulario en MS Access 2019 que utiliza un Objeto ADO como “fuente de registro”. En el formulario, hay un Textbox con la propiedad controlsource=Field. Entonces, cuando abro el formulario, todo funciona como se espera (el contenido de Field se muestra en el Textbox, puedo mover el cursor hacia adelante y hacia atrás y así sucesivamente) excepto por una cosa: No es posible cambiar, agregar o eliminar registros.
Este problema se “reduce” a partir de un código mucho más complejo. La consulta que paso a SQL Server tarda varios minutos en ejecutarse si uso DAO así que el gran punto es dejar que SQL Server ejecute la consulta (tarda < 1 sek).
Pero bueno, la cosa es que quiero que el Access Form actúe exactamente igual con un recordset ADO conectado a un SQL Server que si el recordset fuera manejado por un objeto DAO conectado a un backend .accdb-file. Así que es el recordset el que debe ser actualizable. La propiedad rs.recordcount es -1 lo que indica que el recordset no es actualizable. Si esa propiedad es algo más que -1 después de la línea adocom.execute , entonces estamos en casa.

Cómo hacer que una consulta sea actualizable en access

El error está en la ‘línea 0’ porque no es un error de codificación o de sintaxis. Es una condición de error creada por un fallo del programador al no anticiparse a probables condiciones de error, como que la consulta no devuelva ningún registro. Chris.
Yo cometo este tipo de errores todo el tiempo. Y sin embargo, siempre se me muestra el número de línea que causó el error, el 100% de las veces. Así que, aunque estoy seguro de que hay una razón lógica por la que el PO ve “error en la línea 0” en lugar del número de línea real, no es tan sencillo como decir “una condición de error creada por un fallo del programador a la hora de anticipar probables condiciones de error…”
Pensándolo bien, yo utilizo comandos SQL “UPDATE table SET field = value” etc… para hacer actualizaciones, que no es lo mismo que hace el OP… Pero aún así no veo que el error que el OP está recibiendo que apunta a un conjunto de registros de sólo lectura causando un problema?
Por lo tanto, usted está tratando de obtener el valor de “ActAnId” del módulo que se presentó desde (que contiene <form></form> etiquetas, espero?) … Pero está vacío (cero). Así que se me olvida, ¿cómo llegó al módulo3? ¿Qué formulario se envía que tiene ACTION=”module3″? Ahí es donde está el problema, creo.

Acerca del autor

admin

Ver todos los artículos