powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сумму значений записей перенести в связанную таблицу?
8 сообщений из 8, страница 1 из 1
Как сумму значений записей перенести в связанную таблицу?
    #32841994
gera1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица Заказ связана с СоставЗаказа. В Заказ есть поле [Сумма], в СоставЗаказа каждому заказу соответствуют несколько записей с полем [Цена]. Как занести в поле [Заказ].[Сумма] сумму значений [СоставЗаказа].[Цена] по каждому заказу?
Нагородил сложную процедуру с пробегом по рекордсету "Заказ", получаю из него idЗаказ, использую его как отбор для рекордсета "СоставЗаказа", потом считаю сумму и редактирую запись в рекордсете "Заказ".
Вобщем: хрен чего и сбоку бантик!
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32842057
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гера, хранение суммы в отдельном поле при наличии ее составляющих есть
нарушение нормализации. Хочу подчеркнуть, что само по себе это не является
ошибкой, но идти на это нужно сознательно, попробовав сперва другие
варианты, как напр. вычисление суммы заказа каждый раз по слагаемым.
Пользователь об этом не обязан знать - он будет видеть просто цифры в формах
и отчетах. В случае хранения суммы в отдельном поле нужно тщательно следить
за целостностью данных: предусмотреть механизм обновления стоимости заказа
при любом изменении цены нужно .
В общем случае заполнить поле "СуммаЗаказа" можно через Update Zakaz Inner
Join SostavZakaza On ....... Set SummaZakaza = ......

Можно сделать обновление суммы заказа по событиям на форме, связанным с
изменением записей в деталях заказа по кнопке.
--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32842531
gera1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ха! Так это было первое, что я попробовал:
Код: plaintext
1.
2.
UPDATE Заказ INNER JOIN СоставЗаказа ON Заказ.idЗаказ=
 СоставЗаказа.idЗаказ SET Заказ.Сумма = Sum([СоставЗаказа ]![Цена]*
[СоставЗаказа ]![Колич])
если открыть этот запрос в режиме просмотра, то поле [Сумма] выводится столько раз, сколько имеется записей по этому заказу в СоставЗаказа, при попытке запустить получаю ошибку, что поле [Сумма] не является частью статистич.функции.
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32842584
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, нужно решить две проблемы - если первая решена, тогда - одна
:-)
1) заполнить множество полей "сумма" в табл. Заказ для имеющихся записей
СоставЗаказа. Здесь можно использовать Update с функцией по подмножесту
Dsum() вместо агрегатной функции Sum().
2) заполнять динамически поле "Сумма" при заполнении нового заказа. Здесь
можно использовать тот же 'Update Zakaz Set SummaZakaza = ' &
Me!SostavZakaza!Vsego где Vsego - поле подформы с вычисленной суммой заказа.

Так все-таки, точно ли нужно сумма заказа в отдельном поле в таблице Заказ?

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32842622
gera1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, нужно(знаю, что нарушается нормализация) хранить сумму.
С DSum работает, спасибо!
Правда выводит глупое сообщение "Будет обновлено 10 записей", но обновляет, конечно одну - это в СоставЗаказа 10 слагаемых.
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32843384
gera1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рано обрадывался!
Если в табл.Заказы больше одного заказа, то
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32843417
gera1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рано обрадывался!
Если в табл.Заказы больше одного заказа, то DSum делает такую гадость: из СоставЗаказа вычисляет сумму значений [СоставЗаказа].[Цена] по всем заказам и записывает это значение во все поля [Заказ].[Сумма].
Попробывал так:
в одном запросе вычисляю Sum по каждому заказу, запрос возвращает только idЗаказ и Sum_Цена.
Во втором запросе, на обновление, связываю Заказы и Запрос1 и пытаюсь изменять [Заказ].[Сумма] значением Sum_Цена - не дает, из-за групповой функции Sum в Запросе1 и Запрос2 становится необновляемым.
...
Рейтинг: 0 / 0
Как сумму значений записей перенести в связанную таблицу?
    #32843764
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гера, DSum принимает параметр аналогичный Where запроса - просто нужно его
вписать.

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сумму значений записей перенести в связанную таблицу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]