如何使用基于其他字段选项的表中的信息更新字段

时间:2013-03-27 18:35:37

标签: ms-access ms-access-2007

我正在使用Access 2007构建数据库。我没有很多使用Access的经验,而且我不确定如何完成此任务。

我已经构建了一个条目表单,并且有一个名为“Product”的字段,它是一个从Product表中提取信息的下拉列表。 Product表设置如下:

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

我有另一个名为“HTS Commodity”的字段,它是一个从HTSUS表中提取信息的下拉列表。此字段已锁定,我希望一旦有人从“产品”字段中选择“产品”,该值就会自动更新。这是HTSUS表:

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

当某人选择“产品”字段中的项目时,它会显示产品名称。一旦他们选择了该项目,我希望根据表格中的商品列自动更新“HTS Commodity”字段,但显示HTSUS Value列。

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

我希望这是有道理的。我理解如何使用不同的构建器创建宏,但我不知道如何实现这一点。我一直在尝试使用AfterUpdate()宏。感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分: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]表中的[Product Name]字段中获取其值。当您从列表中选择“产品#1”时,cbxProductName.Text将是“产品#1”。

现在在表单上创建一个文本框,并将其命名为txtHtsus。将其Locked属性设置为Yes,并输入以下Control Source属性:

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

现在,在After Update组合框控件的cbxProductName事件中,单击省略号按钮[...],选择“代码生成器”,然后添加.Requery语句到cbxProductName_AfterUpdate()程序,像这样

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

尝试一下,看看它是否适合你。

答案 1 :(得分:0)

你需要使用我最喜欢的:dlookup

http://allenbrowne.com/casu-07.html