在Access 2007中绑定表单组合框

时间:2020-03-05 18:55:03  来源:igfitidea点击:

我创建了一个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字段上是否具有主键。原始配置应该抛出错误或者消息,说更新将违反密钥。看起来我们可以有两个具有相同名称的类别。