在Access 2007中绑定表单组合框

在Access 2007中绑定表单组合框

Binding a form combo box in Access 2007

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

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

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

发生的情况是,如果当前产品的CategoryID为12,这是Category表中的CategoryName"椅子",然后选择一个新值,则在组合框中说" Tables"(CategoryID 13)用新的值更新了CategoryID 12。 CategoryName" Tables"而不是将Product表CategoryID更新为13。

我如何将Category表绑定到combox框,以便datatextfield(我希望在Access中存在)是CategoryName,而datavaluefield是CategoryID,并且只有当更改了组合框项目时,才会更新产品的CategoryID ?

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


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

啊,是的,艾莉森,很抱歉,我忘记了设置组合框的columncount = 2。


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


推荐阅读