Во-первых, немного о моей настройке.
У меня есть примитивная база данных из трех таблиц:
A. Таблица, в которой перечислены различные местоположения: [location_code], [location_name]
B. Таблица, которая описывает элементы: [item_code], [item_name], [item_price]
и, наконец, таблица, которая связывает всю базу данных roo ^ H ^ H ^ H вместе
C. В таблице указано, какие элементы хранятся в каждом месте и в каких количествах: [код_ местоположения], [код_средства], [количество_квантов]. Эта таблица может иметь несколько записей с одним и тем же [location_code], поскольку разные элементы могут храниться в одном и том же месте. По сути, это школьная реализация отношения один-ко-многим от местоположений к предметам, с дополнительным атрибутом (количеством), прикрепленным к каждой ссылке местоположения-предмета.
Теперь все, что мне нужно сделать, это создать форму, в которой будут перечислены все элементы, хранящиеся в определенном месте. Это основной вариант использования функции «подчиненной формы» в Access. Основная форма просто перемещается по разным местам, а подчиненная форма перечисляет элементы.
Я использую
SELECT C.location_code, B.item_name, B.item_code, B.item_price, C.item_quantity
FROM B INNER JOIN C ON B.item_code=C.item_code
в качестве источника записи для подчиненной формы. Основная форма связана с подчиненной формой [location_code]. В подчиненной форме задан макет списка (не макет таблицы), т. Е. Каждому полю базы данных присвоен собственный элемент управления.
Пока все работает отлично. Я выбираю местоположение в главной форме, и подчиненная форма дает мне список редактируемых триплетов [item_name] - [item_price] - [item_quantity] для текущего местоположения.
В качестве следующего шага я хочу добавить вычисляемый элемент управления для каждого из вышеперечисленных триплетов. Я хочу узнать общую стоимость каждого вида товара (т.е. просто [item_price] * [item_quantity]
в каждой строке). Легко, я добавляю вычисляемый элемент управления в «повторяемую» область подчиненной формы и указываю
= [item_price] * [item_quantity]
в качестве формулы для значения. Опять все работает отлично. Теперь вместо вышеперечисленных триплетов мой список содержит четыре записи в каждой строке: [item_name] - [item_price] - [item_quantity] - [total_item_price]. И, что важно, когда я редактирую [item_price] или [item_quantity], [total_item_price] автоматически переоценивается, когда я заканчиваю редактирование.
И в качестве последнего шага я хочу добавить еще один вычисляемый элемент управления, который бы отображал общую стоимость всех элементов, хранящихся в текущем местоположении (назовем это «общая сумма»). Также поместите этот элемент управления в подчиненную форму (в этот раз в область «сноска») и укажите следующую формулу в качестве значения
= SUM([item_price] * [item_quantity])
Теперь это работает. Общая стоимость рассчитывается правильно каждый раз, когда я меняю местоположение в основной форме. Кроме того, когда я изменяю [item_price] для любого элемента в текущем местоположении, общая сумма также обновляется автоматически. Однако, когда я изменяю [item_quantity], общий итог не обновляется (???). Нажав F9, вы обновитесь. Изменение текущего местоположения туда и обратно обновит его. Но, к сожалению, простое изменение [item_quantity] не вызывает автоматического обновления.
Кто-нибудь знает, что здесь может быть не так? Почему изменения в [item_price] вызывают автоматическое обновление итоговой суммы, а изменения в [item_quantity] - нет? Интуитивно понятно, что эти поля имеют одинаковый статус (за исключением того, что первое происходит из таблицы B, а второе - из таблицы C). Почему поведение отличается? Как сделать так, чтобы оно обновлялось автоматически?