我创建了一个Access 2007表单,例如,显示Product表中的Products。 Product表中的一个字段是与此产品的父类别对应的CategoryID。
在表单中,CategoryID需要表示为绑定到Category表的组合框。这里的想法很简单:选择一个新的类别应该更新Product表中的CategoryID。
我遇到的问题是选择一个新类别会更新Category表的CategoryName,而不是更新Product表中的CategoryID。原因是组合框似乎只能绑定到Category表的CategoryName。
如果当前产品的CategoryID为12,这是Category表中的CategoryName“Chairs”,然后选择一个新值,让组合框中的“Tables”(CategoryID 13)更新ClassID为12使用新的CategoryName“Tables”而不是将Product表CategoryID更新为13。
如何将Category表绑定到一个combox框,以便datatextfield(我希望存在于Access中)是CategoryName,datavaluefield是CategoryID,只有当选定的组合框时才会更新Product的CategoryID项目被更改?
修改:请参阅下面接受的答案。我还需要将列数更改为2,一切都开始完美。
答案 0 :(得分:4)
您需要在查询中使用组合框中的两个值 例如SELECT CategoryId,CategoryName FROM CategoryTable ... 将组合框绑定到第一列CategoryId。 将组合框的列宽设置为0in(不需要第二个值,因此没有限制)。这将隐藏包含所选值的第一列;所有这些都显示了描述值,这是你想要看到的。 所以现在当你在组合框中选择一个不同的选项时,组合框返回的值将是绑定值,CategoryId,而不是CategoryName。
<啊>啊,是艾莉森,对不起,我忘了设置组合框columncount = 2。答案 1 :(得分:0)
您还应该检查您的类别表在CategoryName字段上是否具有主键。您的原始配置应该抛出错误或消息说更新将违反密钥。因为它似乎可以有两个同名的类别。