2013-03-27 2 views
0

Я строю базу данных с использованием Access 2007. У меня нет большого опыта работы с Access, и я не уверен, как это сделать задача.Как обновить поле с информацией из таблицы на основе других опций полей

Я создал форму заявки и создал поле «Продукт», которое является раскрывающимся списком, которое извлекает информацию из таблицы «Продукт». Таблица продукта устанавливается следующим образом:

Product Name  Commodity 
-------------------------------------------- 
Product #1   Soybean 
Product #2   Soybean Meal 
Product #3   Corn 

У меня есть еще одно поле в форме под названием «HTS товара», который является падение вниз, что тянет информацию из таблицы HTSUS. Это поле заблокировано, и я хотел бы, чтобы значение автоматически обновлялось, как только кто-то выбирает продукт из поля «Продукт». Вот таблица HTSUS:

Commodity   HTSUS Value 
-------------------------------------------- 
Soybean    1.1.1 
Soybean Meal  2.2.2 
Corn    3.3.3 

Когда человек выбирает элемент в поле «Продукты», он показывает название продукта. Как только они выберут элемент, я бы хотел, чтобы поле «HTS Commodity» автоматически обновлялось на основе столбца Commodity из таблиц, но отображало столбец HTSUS Value.

 Product: Product #2 (Soybean Meal) 
HTS Commodity: 2.2.2 (Soybean Meal) 

Надеюсь, это имеет смысл. Я понимаю, как создавать макросы с использованием разных разработчиков, но я просто не знаю, как это сделать. Я пытаюсь использовать макрос AfterUpdate(). Спасибо за любую помощь заранее.

ответ

1

Вот один из способов сделать это:

Начните с создания сохраненного запроса с именем HTSUS_by_Product, чей код SQL является

SELECT Product.[Product Name], HTSUS.[HTSTS Value] 
FROM Product INNER JOIN HTSUS ON Product.Commodity = HTSUS.Commodity; 

Это даст результаты, как это

Product Name HTSUS Value 
------------ ----------- 
Product #1  1.1.1 
Product #2  2.2.2 
Product #3  3.3.3 

Теперь, на вашей форме предположим, что у вас есть поле со списком cbxProductName, которое получает его значения из поля [Product Name] в таблице [Product]. Когда вы выберете «Продукт №1» из списка, тогда cbxProductName.Text будет «Продукт №1».

Теперь создайте текстовое поле на форме и назовите его txtHtsus. Установите свойство Locked в Yes, и введите в качестве его Control Source собственности:

=DLookUp("[HTSUS Value]","HTSUS_by_Product","[Product Name]=""" & [cbxProductName].[Text] & """") 

Теперь в After Update случае для управления коробкой cbxProductName комбо, нажмите кнопку с многоточием [...], выберите «Code Builder», а затем добавить .Requery заявления в cbxProductName_AfterUpdate() процедуры, как этот

Private Sub cbxProductName_AfterUpdate() 
Me.txtHtsus.Requery 
End Sub 

Дайте что попробовать и посмотреть, если он работает для вас.

+0

Спасибо, Горда! Я изменил несколько частей, но получил именно то, что хотел. Спасибо за вашу помощь! :) –

Смежные вопросы