Обновить содержимое текстового поля на форме в зависимости от выбора значения из ComoBox

Виталий Сигов

Здравствуйте, уважаемые форумчане. Подскажите пожалуйста по следующему вопросу: есть 3 таблицы в базе данных access - Договор, Работы по заявке и Виды работ. Таблица "Виды работ" содержит следующие поля: Код работы, Наименование и Стоимость. Таблица "Договор" содержит следующие поля: Порядковый № работы, Код вида работ. Таблица "Договор" содержит следующие поля: Код договора, Дата составления, Срок исполнения, Стоимость работ и Порядковый номер работы. Написал запрос на обновление содержимого поля "Стоимость работ" для формы "Договор"
UPDATE ([Виды работ] INNER JOIN [Работы по заявке] ON [Виды работ].[Код вида работ] = [Работы по заявке].[Код вида работ]) 
INNER JOIN Договор ON [Работы по заявке].[Порядковый № работы] = Договор.[Порядковый № работы] 
SET Договор.[Стоимость работ] = [Виды работ]![Стоимость]
WHERE ((([Работы по заявке]![Порядковый № работы])=[Договор]![Порядковый № работы]) AND (([Forms]![Договор]![ndog])=[Договор]![Код договора]));
И у меня вопрос: Какое событие надо использовать, чтобы при выборе из поля со списком Порядковый номер работы формы "Договор" автоматически обновлялось содержимое поля "Стоимость работ" формы "Договор" ? Пробовал использовать событие "После обновления" для поля со списком:
DoCmd.SetWarnings False
DoCmd.OpenQuery "ОбновлениеСтоимостиРаботДоговор"
DoCmd.SetWarnings True
[Forms]![Договор].Recalc
Но после выбора того или иного значения из поля со списком "Порядковый номер работы" формы "Договор" содержимое поля "Стоимость работ" формы "Договор" не меняется
2 ответа

Виталий Сигов

Виталий Сигов, метод Recalc обновляет вычисляемые элементы формы. У вас же, после выполнения запроса, изменяются данные таблицы, т.е. источника формы. Для показа измененных значений источника следует применять метод RequeryИ кстати, вместо макрокоманд лучше использовать методы DAO
Currentdb.Execute "ОбновлениеСтоимостиРаботДоговор"
[Forms]![Договор].Requery
И еще. Первое условие во Where запроса Работы по заявке]![Порядковый № работы]=[Договор]![Порядковый № работы] лишнее. Оно целиком содержится в джойне


Виталий Сигов

Сделал, как Вы сказали, написал:
Currentdb.Execute "ОбновлениеСтоимостиРаботДоговор"
Выдает ошибку "Слишком мало параметров. Требуется 1" Подскажите пожалуйста что не так сделал ?