簡體   English   中英

糾正運行時錯誤3554 MS Access

[英]Correcting Run-Time Error 3554 MS Access

我在MS Access表單上運行VBA驅動的SQL。

在此測試語句中,我試圖基於另一個表引導的Territory_CountryID插入LanguageID信息。

以下是我的代碼:

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的語言,該怎么辦? IE,根據返回的所有Territory_CountryID搜索?

謝謝。

SQL關鍵字IN允許您通過逗號分隔列表(例如: (512, 513, 514) )或返回多個值的子查詢來指定一組數據作為過濾條件,如上所述。

您的第四行應更改為:

WHERE Territory_CountryID IN

我希望這有幫助。

-C§

當簡單的JOIN可以滿足條件時,為什么還要在WHERE子句中運行子查詢:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM