Access 2003 - выполнение запроса на обновление на основе результатов выборочного запроса

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

Таблица A имеет 3 столбца (OID, Project_Number, Landowner)
Таблица B имеет 4 столбца (OID, PhoneNum, Address, Year)

Эти таблицы имеют отношение один ко многим. Один OID в таблице A относится ко многим в таблице B

Table A
1          A10          Bill
2          B10          Sally
3          A10          Bill

Table B
1          555          123 blah st           2012
1                                             2013
2          111          456 aaa st            2012
3                                             2012

Форма позволяет пользователю вводить информацию, которая заполняет таблицу B. В подчиненной форме отображается список записей, где Project_Number, Landowner и Year равны записи, отображаемой в форме.

For example.  If the form is showing
1         A10          Bill

the subform is showing
1         A10          Bill        2012
3         A10          Bill        2012

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

Мой запрос на выборку выглядит следующим образом:

SELECT B.Project_Number, A.LANDOWNER, B.Year
FROM A INNER JOIN B ON A.OBJECTID = A.OBJECTID;

Подформа настроена
Связать дочерние поля: Project_Number; Год; землевладелец
Поля мастера ссылок: B.Project_Number; Год; A.Landowner

Мне бы хотелось:

UPDATE B.PhoneNum, B.Address, B.Year
WHERE items found in my subform
WITH information from my form

Легче ли забыть подчиненную форму и сделать все это с помощью одного запроса на обновление?

UPDATE B SET B.phonenum = [New_Info]![PhoneNumCtrl], B.Address = [New_Info]![AddressCtrl]
WHERE [A]![Landowner] = The same landowner as the OID selected, [A]![Project_Number] = The same project number as the OID selected, [New_Info]![Year] = [B]![Year]

Заранее благодарю за любую помощь!

Все работает сейчас. Я хотел добавить к ответу djphatic.
При этом обязательно добавьте [Forms]![Formname]![Controlname]

1 ответ

Решение

В зависимости от того, где находятся элементы управления в вашей форме, вам может понадобиться изменить ссылку на элемент управления.

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

UPDATE  B
SET B.phonenum = [formname]![controlname], ...
FROM B JOIN A ON B.OID = A.OID
WHERE A.PROJECTID = [formname]![controlname]
AND B.YEAR = [formname]![controlname]
Другие вопросы по тегам