Compartir a través de

Problema con ACCES generando CONSULTA SQL, Error: LA OPERACION DEBE USAR UNA CONSULTA ACTUALIZABLE

Anónimas
2023-07-03T15:43:22+00:00

Tengo un problema para solucionar una consulta de UPDATE en ACCES.

La Siguiente consulta me da error: "LA OPERACION DEBE USAR UNA CONSULTA ACTUALIZABLE"

UPDATE Importaciones

SET PTotal_FINAL_OP = (

SELECT SUM(ImportePesos)

FROM GastosInvoice

WHERE GastosInvoice.Id_invoice = Importaciones.Id

) WHERE Importaciones.Id = 12;

Ya he probado de todo, no comprendo que esta mal..

Si hago el select, por separado, devuelve el importe.

Pero cuando quiero hacer un UPDATE, con información de otras tablas haciendo la subconsulta, es cuando me da ese error.

he leído por ahí que tiene que ver con los permisos, pero es que la base de datos la actualizo constantemente con otras consultas. Realmente no se como solucionarlo.

Agradezco de antemano

Microsoft 365 y Office | Access | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

Respuesta aceptada por el autor de la pregunta

Anónimas
2023-07-18T10:23:17+00:00

OK muchas gracias por la respuesta. LA respuesta correcta la encontre en otro foro, y es como dice el articulo que envio, que es correcto

Lo aclaro por aqui:
Aparentemente acces no permite funciones en operaciones de UPDATE, en este caso de Suma (SUM)
por tanto hay que resolverlo con dos consultas por separado.
1 creando una tabla con el dato que deseamos (en mi caso la suma de importePesos de la tabla GastosInvoice ( SUM(ImportePesos))
Luego de crear la tabla temporal hacer la consulta UPDATE haciendo un INNER JOIN de la tabla Temporal que ya tiene los datos sumados. Esto ocurre porque ACCES no permite funciones en el método UPDATE,

HIce estas dos consultas y resulto:
SELECT Id_invoice, SUM(ImportePesos) AS SumaImporte INTO Temporal
FROM GastosInvoice
WHERE Id_invoice = 12
GROUP BY Id_Invoice

UPDATE Importaciones AS i
INNER JOIN Temporal AS T ON i.id = T.Id_invoice
SET i.DolarMomento = T.SumaImporte
WHERE T.Id_invoice = 12;

Evidentemente es una limitación de acces porque tengo entendido que otras plataformas (MySQL) si funciona la consulta tal como la puse en un principio.

¿Le ha resultado útil esta respuesta?

0 comentarios No hay comentarios

4 respuestas adicionales

Ordenar por: Muy útil
  1. Anónimas
    2023-07-18T11:17:06+00:00

    Esta respuesta se ha traducido automáticamente. Como resultado, puede haber errores gramaticales o expresiones extrañas.

    Gracias por compartirnos la solución.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  2. Anónimas
    2023-07-18T09:43:07+00:00

    Esta respuesta se ha traducido automáticamente. Como resultado, puede haber errores gramaticales o expresiones extrañas.

    ¿Qué es "La operación debe usar una consulta actualizable" y cómo se soluciona?
    Algunas de las razones son:

    1. La tabla no tiene un campo de clave principal.
    2. Usar la consulta UPDATE que incluye una instrucción Join.
    3. El archivo de MS-Access tiene un atributo "Sólo lectura".
    4. Otra conexión de base de datos ya está abierta.

    Hay alguna solución en este enlace. Espero que ayude.

    La operación debe utilizar una consulta actualizable, Este objeto Recordset no se puede actualizar: tratar con consultas no actualizables en Microsoft Access (fmsinc.com)

    Descargo de responsabilidad: Microsoft no proporciona garantías ni garantías implícitas o de otro tipo, y no es responsable de la información que reciba de los sitios vinculados de terceros ni de ningún soporte técnico relacionado con la tecnología.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  3. Anónimas
    2023-07-04T09:35:52+00:00

    HOla Sophia, gracias por responder.

    La tabla IMPORTACIONES si es actualizable y tiene un Indice primario (primary Key)

    Voya revisar el Articulo que me ha enviado

    hago Updates siempre de la tabla (UPDATE Importaciones SET ....)

    Pero sin tomar datos de otras tablas. El problema se me ha dado en este caso , al hacer una subconsulta. para actualizar la tabla

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  4. Anónimas
    2023-07-04T05:30:13+00:00

    Esta respuesta se ha traducido automáticamente. Como resultado, puede haber errores gramaticales o expresiones extrañas.

    Hola Marianito1977,

    Gracias por publicar esta pregunta en Microsoft Community.

    Reviso la publicación cuidadosamente, lamento los inconvenientes que causa el problema.

    Una consulta sólo se podrá actualizar si un campo que de otro modo tiene un índice único para una clave externa indizada del mismo tipo de datos. Si 'Importaciones' no es actualizable, entonces la consulta UPDATE que lo usa tampoco será actualizable.

    ¡Compruebe los índices en la tabla ODBC y la base de datos!

    Puede consultar la mayoría de las razones por las que una consulta puede no ser actualizable:

    Roger's Access Blog: Este juego de registros no se puede actualizar. ¿Por qué? (rogersaccessblog.blogspot.com)

    Saludos

    Sophia

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios