ACCESS Obteniendo Error 3340 Query actualización''

Desde Diciembre esto recibiendo este error en las consultas de actualización. Estas consultas han estado funcionando correctamente durante todo el año y consultas muy sencillas dan el mismo error al realizar una consulta UPDATE. La consulta genera error en mi código sería la que contiene la variable "q_hMaq"

En internet he encontrado que es provocado por una actualización de Microsof:

Este es un error conocido causado por las actualizaciones de Office lanzadas el 12 de noviembre de 2019. El error afecta a todas las versiones de Access actualmente compatibles con Microsoft (desde Access 2010 hasta 365).

https://social.msdn.microsoft.com/Forums/en-US/4c0df2e5-ac02-4469-9f89-e4088068635d/error-3340-la-consulta-quot-esta-daada-vba-access-2010?forum=isvvba

https://www.imprimircheques.com/soporte/faq.php?id=error-3340-consulta-da%C3%B1ada

https://stackoverflow.com/questions/58832269/getting-error-3340-query-is-corrupt-while-executing-queries-docmd-runsql

Podríais indicarme si hay alguna forma de ejecutar estas consultas de actualización y evitar este error.

2 Respuestas

Respuesta
2

Al no poder ver la construcción de las tablas, ni saber como son los campos, ni saber que es el campo 1 prueba a poner la instrucción como

Docmd.runsql"update [modulo plan] set sum_FQTY='" & hm & "' where id=-1 and [1]='" & maq & "'"

Muchas gracias Julián González Cabarcos por tu ayuda y disculpa no haberte pasado toda la información. Con el aporte de  Sveinbjorn El Rojo me ha funcionado bien el programa.

No estoy utilizando el método Docmd.runsql para ejecutar consultas de actualización porque al ejecutar el programa sale el mensaje de aviso conforme voy a actualizar filas y te obliga a indicar si o no. El único modo para evitar estos mensajes es usando SetWarnings, pero cuando se ejecuta este método también desactiva todos los mensajes de guardar cambios al cerrar objeto, consulta, table, form. Como no se otra forma de evitar el mensaje que emite la consulta update la ejecuto de esta forma:

q_hMaq = "UPDATE Modulo_Plan SET  Sum_FQTY = '" & hM & "' WHERE ((([Id])=-1) AND (([1])='" & Maq & "'));"

'Evitamos los mensajes de actualización
CurrentDb.Execute q_hMaq

Como siempre es un placer contar contigo.

un saludo

Puedes hacerlo poniendo, por ejemplo

Docmd.setwarnings false

docmd.runsql....

docmd.setwarnings true

Respuesta
2

La sugerencia del propio Microsoft cuando se encontró con el problema fue crear una consulta sobre la tabla (en tu caso hacer un SELECT * FROM TablaAActualizar") y luego hacer el UPDATE sobre esa consulta y no sobre la Tabla: https://support.office.com/en-us/article/access-error-query-is-corrupt-fad205a5-9fd4-49f1-be83-f21636caedec

De cualquier manera Microsoft ya sacó parches que solucionan ese bug:

Office 2016: https://support.microsoft.com/en-us/help/4484198/november-18-2019-update-for-office-2016-kb4484198

Office 2013: https://support.microsoft.com/en-us/help/2965317/november-27-2019-update-for-office-2013-kb2965317

Office 2010: https://support.microsoft.com/en-us/help/2986256/november-27-2019-update-for-office-2010-kb2986256

Buenas tardes y muchas gracias Sveinbjorn El Rojo los parches nos han ido muy bien, muy sencillo y super efectivo.

Por curiosidad estoy intentado ejecutar la consulta como Microsoft indico y no conseguí hacerla funcionar. En negrita he dejado el select que me indicas unas líneas mas arriba  "(en tu caso hacer un SELECT * FROM TablaAActualizar")"

UPDATE SELECT * FROM tbl_Ejemplo SET CAMPO1= 5

Igual no me he expresado bien, tienes que crear una consulta y guardarla como una consulta de ru Bd, y luego hacer el Update sobre esa consulta y no sobre la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas