6

例如,我创建了一个 Access 2007 表单,用于显示 Product 表中的 Products。Product 表中的字段之一是与此产品的父类别对应的 CategoryID。

在表单中,CategoryID 需要表示为绑定到 Category 表的组合框。这里的想法非常简单:选择一个新类别应该更新 Product 表中的 CategoryID。

我遇到的问题是选择一个新的类别会更新 Category 表的 CategoryName 而不是更新 Product 表中的 CategoryID。这样做的原因是,似乎组合框必须只绑定到 Category 表的 CategoryName。

如果当前产品的 CategoryID 为 12,它是 Category 表中的 CategoryName“Chairs”,那么会发生什么情况,然后选择一个新值,比如组合框中的“Tables”(CategoryID 13)用新的 CategoryID 更新 12 CategoryName "Tables" 而不是将 Product 表 CategoryID 更新为 13。

如何将类别表绑定到Combox框,以便DataTyxtfield(我希望在Access中存在)是类别名称,DataValueField是CategoryID,只有在所选组合框项更改时,将更新产品的CategoryID ?

编辑:请参阅下面接受的答案。我还需要将列数更改为 2,一切都开始正常工作。

4

2 回答 2

5

您需要在组合框的查询中使用这两个值。
例如 SELECT CategoryId, CategoryName FROM CategoryTable... 将组合框绑定到第一列 CategoryId。将组合框的列宽设置为 0in(不需要第二个值,因此没有限制)。这将隐藏包含您选择的值的第一列;所有显示它的描述值,这就是你想看到的。因此,现在当您在组合框中选择不同的选项时,组合框返回的值将是绑定值 CategoryId,而不是 CategoryName。

啊,是的,Alison,对不起,我忘了设置组合框 columncount = 2。

于 2008-09-16T03:10:47.067 回答
0

您还应该检查您的类别表在 CategoryName 字段上有一个主键。您的原始配置应该抛出错误或消息,说明更新将违反密钥。看起来你可以有两个同名的类别。

于 2008-09-17T02:03:44.443 回答