Если я полностью не пропустил лодку на ваших структурах таблицы, ваше заявление об обновлении не работает. Вот снимок экрана с запуском запроса, который вы указали в своем коде, и та же ошибка. NET бросил:
![enter image description here](https://i.stack.imgur.com/eG0CV.png)
Итак, вот моя мысль ... создайте запрос с нужными итогами в целевой таблице. Если взять буквально то, что у вас есть, это выглядело бы так:
SELECT CAIXA.Id_Caixa, Sum(Contribuicao.Valor_Contribuicao) AS SumOfValor_Contribuicao
FROM CAIXA INNER JOIN Contribuicao ON CAIXA.Id_Caixa = Contribuicao.Id_Caixa
GROUP BY CAIXA.Id_Caixa;
Я не совсем уверен, почему CAIXA
даже необходим, поскольку условие соединения находится в поле Id_Caixa
, но для непрерывности я сохранил это там.
Сначала я думал сделать запрос на обновление этого запроса (вроде представления), но он выдал какую-то странную ошибку, и мне пришлось преобразовать приведенный выше запрос в запрос make-table. :
SELECT CAIXA.Id_Caixa, Sum(Contribuicao.Valor_Contribuicao) AS SumOfValor_Contribuicao INTO Totals
FROM CAIXA INNER JOIN Contribuicao ON CAIXA.Id_Caixa = Contribuicao.Id_Caixa
GROUP BY CAIXA.Id_Caixa;
Таким образом, результирующая таблица называется Totals
.
Отсюда простой запрос на обновление должен обновить эти итоги. Обратите внимание, что синтаксис сильно отличается от того, что вы перечислили выше ...
UPDATE CAIXA
INNER JOIN Totals ON CAIXA.Id_Caixa = Totals.Id_Caixa
SET CAIXA.Valor_Caixa = [Totals].[SumOfValor_Contribuicao];
Это сработало для меня, предполагая, что @madreflection верен, и я предполагаю, что это так.
Вы уверены, что это MS Access? Ничто из этого не похоже на Access. Связан ли Access с какой-либо другой внутренней базой данных (потому что если это так, все будет намного проще).