2008-09-16 60 views
6

我创建了一个Access 2007表单,用于显示产品表中的产品(例如,产品)。 Product表中的一个字段是与此产品的父类别对应的CategoryID。在Access 2007中绑定表单组合框

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

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

如果当前产品的类别ID为12,即类别表中的CategoryName“Chairs”,然后选择一个新值,让我们说组合框中的“表”(CategoryID 13)更新CategoryID 12使用新的CategoryName“Tables”,而不是将产品表类别ID更新为13.

如何将类别表绑定到combox框,以便datatextfield(我希望在Access中存在)是类别名和datavaluefield是CategoryID,只有当选择的组合框项目更改时,产品的CategoryID才会更新?

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

回答

4

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

啊,是艾莉森,对不起,我忘了设定的组合框列数= 2

0

您也应该检查你的类别表在类别名称字段主键。你原来的配置应该抛出一个错误或消息说更新会违反密钥。因为它似乎可以有两个同名的类别。