纠正运行时错误3554 MS Access

时间:2015-09-24 18:29:50

标签: sql vba ms-access

我在MS Access表单上运行VBA驱动的SQL。

在此测试声明中,我尝试根据另一个表引导的LanguageID插入Territory_CountryID信息。

以下是我的代码:

INSERT INTO tblTest
SELECT tblCountry_Language.LanguageID
FROM tblCountry_Language
WHERE Territory_CountryID = 
    (SELECT tblTerritory_Country.Territory_CountryID 
    FROM tblTerritory_Country 
    WHERE tblTerritory_Country.TerritoryID = "& [Forms]![frmInput]![frmInput_Terms].[Form]![CountryID] &");" 

运行SQL时,我得到运行时错误3554,说

“此子查询最多可以返回一条记录”

我理解这个错误意味着什么;查询只能在其子查询中搜索一个“密钥”。

如果我想返回连接到Territory_CountryID所有语言,我能做些什么吗? I.E.,根据所有返回的Territory_CountryID进行搜索?

感谢。

2 个答案:

答案 0 :(得分:0)

SQL关键字IN允许您通过逗号分隔列表(例如:(512, 513, 514))或返回多个值的子查询指定一组数据作为过滤条件,如你有上面的。

您的第四行应更改为:

WHERE Territory_CountryID IN

我希望这会有所帮助。

-C§

答案 1 :(得分:0)

为什么在简单的socketEvent.Completed += new EventHandler<SocketAsyncEventArgs>(AcceptCompleted); //Add a callback on completed accept incomming connections attemp. 就足够的情况下,甚至可以在WHERE子句中运行子查询:

JOIN