通过外键链接数据时 MS Access 中的控制源无效

Posted

技术标签:

【中文标题】通过外键链接数据时 MS Access 中的控制源无效【英文标题】:Invalid control source in MS Access while linking data by foreign keys 【发布时间】:2014-01-02 21:11:46 【问题描述】:

我需要为当前Product 记录的当前Supplier.supplier_id 创建保存数据Country.country_name 的表单。产品具有 FK supplier_id。表 Supplier 具有 FK country_id。表Country 有两个字段:country_idcountry_name。 试图通过 SQL 查询获取当前产品的country_name,但出现“无效控制源”错误。如何解决?

SQL查询:

SELECT Country.country_name FROM 
Country INNER JOIN 
(Supplier INNER JOIN Product ON Product.supplier_id=Supplier.supplier_id) 
ON Supplier.country_id=Country.country_id;

已解决:

Form 必须在Property sheet > Data > Record source 中有以下查询SELECT * FROM (Country INNER JOIN Supplier ON Country.country_id = Supplier.country_id) INNER JOIN Product ON Supplier.supplier_id = Product.supplier_id;

【问题讨论】:

【参考方案1】:

组合的 Control Source 属性是表单的记录源字段,您要将组合绑定到该字段。所以听起来表单的记录源不包含名为country_name 的字段。 (在这里,组合的行源是否包含该字段并不重要——您不会将组合绑定到它。)

在组合的属性表上,单击控件源框右侧的下拉箭头。它应该显示它识别为包含在表单记录源中的所有字段的名称。

【讨论】:

country name 属性中的组合在控制源中没有 country_name。我的表单只有 Product 作为记录源,因为它只提供一个表可供选择。 Product 中的哪个字段是您要存储组合值的字段? 我必须修改表单的记录集才能在property sheet > control source 中看到我需要的字段/列。【参考方案2】:

该查询中的结果字段名称将是 country_name(即,没有 Country. 前缀)。只需使用country_name 作为您的控制源。

【讨论】:

表单的记录来源是什么? 是表Product

以上是关于通过外键链接数据时 MS Access 中的控制源无效的主要内容,如果未能解决你的问题,请参考以下文章