2011-03-26 150 views
12

我有以下'set recordset'行,我無法工作。根據我可以找到的有關該主題的所有可用幫助,參數看起來是正確的。運行時錯誤「3061」。參數太少。預計1.(Access 2007)

的錯誤顯示:

「運行時錯誤 '3061' 參數太少預計1」。

下面是代碼行:

Set rs = dbs.OpenRecordset("SELECT Centre_X, Centre_Y FROM [qry_all_details] 
WHERE ID = " & siteID & ";", dbOpenSnapshot) 

Where rs is the recordset (Dim rs As Recordset) and dbs = CurrentDb() 

任何幫助,將不勝感激。

我嘗試刪除WHERE原因沒有效果,也使用雙引號之間的單引號,但沒有喜悅。

非常感謝。

+0

此查詢是否打開參數化查詢?也許它期望一個值... – 2011-03-26 20:35:07

+1

不知道是否值得注意,但是至少在你輸入代碼時,你的「一行代碼」佔據了兩行。這是正確的還是隻是在這裏的格式? – Oneide 2011-03-26 22:55:22

回答

1

確保[qry_all_details]存在且可運行。我懷疑它或它使用的任何查詢缺少參數。

0

請問查詢比參數的siteID多,becouse如果你想運行查詢一個參數仍沒有充滿女巫給你的錯誤

37

「運行時錯誤‘3061’。參數太少預期1.「

我相信這發生在您的sql查詢中的字段名稱與表字段名稱不匹配時,即查詢中的字段名稱錯誤或者表格可能完全缺失字段。

+7

噢,這是一個直觀的錯誤信息lol – Hill 2016-12-02 19:25:29

+0

這對我造成了錯誤 – Pat 2017-10-04 17:27:35

+0

參數太少,期望X意味着您將在SQL語句中使用的X字段名不可用。大多數情況下,在手寫SQL代碼行時會出現拼寫錯誤,主要是當您使用可能具有多個「版本」的DB時,一個DB具有這些字段,而一個DB沒有。我更喜歡用一個簡單的代碼來檢查字段是否可用: http://forums.devarticles.com/microsoft-access-development-49/check-if-a-field-exists-in-a-table- using-vba-58559.html – 2017-11-16 14:40:53

2

我的問題竟然是,我改變了一張桌子,添加一個名爲Char的列。 因爲這是一個reserved word in MS Access它需要方形brakcets(單引號或雙引號不好),以便alter語句能夠工作,然後才能更新新創建的列。

+0

當您在SQL查詢中爲所有字段使用括號時,Char在Access中是保留字,如「Date」,「Time」,「Now」和其他「Functions」 '很好去 – 2017-11-16 14:42:13

1

我得到了相同的錯誤信息。 在我的情況下,它是由類型轉換造成的。 檢查siteID是否爲字符串,如果是,則必須添加簡單引號。

希望它能幫助你。

10

您有:

WHERE ID = " & siteID & ";", dbOpenSnapshot) 

你需要:

WHERE ID = "'" & siteID & "';", dbOpenSnapshot) 

注意額外的報價(')。 。 。這個殺死我每次

編輯:添加缺少的雙引號

4

我的問題也得到了單引號解決變量名稱周圍

1

我喜歡的東西得到了同樣的錯誤:

Set rs = dbs.OpenRecordset _ 
(_ 
    "SELECT Field1, Field2, FieldN " _ 
    & "FROM Query1 " _ 
    & "WHERE Query2.Field1 = """ & Value1 & """;" _ 
, dbOpenSnapshot _ 
) 

我通過用「Query2」替換「Query1」來修正錯誤

0

在我的情況下,當我嘗試在查詢中使用新列時收到此錯誤,編輯到MySQL表(鏈接到MS Access),但沒有刷新MS Access內。

要刷新鏈接的遠程表:

  1. 打開「鏈接表管理器」(上帶「外部數據」標籤);
  2. 選擇您要刷新的表格旁邊的複選框;
  3. 按下「確定」按鈕。
0

在我的情況下,我只是改變了我創建表的方式,並且無意中改變了我試圖查詢的字段名稱。確保您在查詢中引用的字段名稱確實存在於您查詢的表/查詢中。