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