powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ввод данных
7 сообщений из 7, страница 1 из 1
ввод данных
    #32027911
Andrey K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует таблица table c полями price,kol,sum.
Создаю форму для ввода данных:
Цена: [price]
Кол-во: [kol]
Сумма: [price]*[kol]
Как зделать так, чтобы значение суммы заносилось в
поле таблицы sum?
...
Рейтинг: 0 / 0
ввод данных
    #32027913
sysop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вообще хранить сумму? Ее в любой момент можно вычеслить.
...
Рейтинг: 0 / 0
ввод данных
    #32027924
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Access нет триггеров. Поэтому придется вешать на событие AfterUpdate для каждого поля формы (!), т.е. для [price] и [kol], подрограммку для вычисления [price]*[kol] и помещения значения в нужное поле (т.е. изменить св-во Value для итогового поля). Ясно, если кто-то поменяет значение не в форме, а в таблице, то ничего не получится.

2SysOp
Бывает, когда такое поле [Сумма] очень часто используется в запросах. Зачем его постоянно вычислять? Память сейчас стОит не так дорого, как лет 20 назад. Поэтому такое поле лучше сразу вычислить и хранить.
...
Рейтинг: 0 / 0
ввод данных
    #32027928
sysop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BAlex

Oбъем памяти, объем дискового пространства, колличество тиков процессора при операциях с данными имеют в этом случае второстепенное значение, хотя третью нормальную форму (оптимальность использования которой математически обоснована) никто не отменял. А первостепенное значение имеет целостность и непротиворечивость данных. В случае изменения количества или цены придется каждый раз упдейтить и сумму. Мало того что это избыточная информация, это еще и геморой для программиста и потенциальный источник ошибок при кривой реализации или сбое. Или Вы будете доказывать, что все операции нужно выполнять в транцакции? В .mdb,в отличии от .adp. это невозможно. Так что дело конечно Ваше, но любой опытный разработчик СУБД в ДАННОМ СЛУЧАЕ сумму хранить не будет.
...
Рейтинг: 0 / 0
ввод данных
    #32027959
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В mdb я б сумму и не хранил: никакой уверенности в ее достоверонсти не будет.

На SQL Servere есть Computed Column. Опытные разработчики СУБД такие поля используют?

P.S. Не могу назвать себя опытным разработчиком
...
Рейтинг: 0 / 0
ввод данных
    #32028035
sysop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В mdb я б сумму и не хранил: никакой уверенности в ее достоверонсти не будет.

Тем не менее Вы взялись советовать Andrey K. решение, от которого сами отказались. Вы сами себе противоречите.

>На SQL Servere есть Computed Column. Опытные разработчики СУБД такие поля используют?

Используют. Только понимают что они виртуальны, т.е. физически не хранятся а при обращении каждый раз вычясляются. Т.е. никакой разницы с тем, если бы вычисление производилось в запросе кроме визуального упрощения. К тому же на такие поля накладывается множество ограничений.

P.S.
Отрицательный опыт - все равно опыт.
...
Рейтинг: 0 / 0
ввод данных
    #32028046
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не вижу противоречий. Я сразу показал и недостаток /можно поменять значение полей в другом месте, и их никто не пересчитает/.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ввод данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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