2016-05-23 226 views
0

我寫一段簡單的SQL查詢的在我的測試數據庫更新表,但我遇到的問題:訪問VB錯誤3061:參數太少,預計1

Public Sub UpdateStatus(TypeName As String) 
Dim DBase As Database 
Dim SQLCommand As String 
Dim qdfChange As QueryDef 
SQLCommand = "Update Case SET Status = 1 WHERE TypeName = '" & TypeName & "';" 
Debug.Print SQLCommand 

Set DBase = OpenDatabase("C:\TestDatabase\CaseSet.accdb") 
Set qdfChange = DBase.CreateQueryDef("", SQLCommand) 
qdfChange.Execute 
End Sub 

在表中的字段名大小寫匹配我的SQL查詢中的。

(如果這是任何值,此功能屬於一種形式)

+0

你能直接運行你的SQL嗎?您的實際列/表名稱是Access中的保留字嗎?什麼數據類型是'bar'和'foo'? – JNevill

+0

foo是數字,酒吧是短文本 – Eddy

+0

'bar'是否正確設置?你可以在'SQLCommand ='行上放一個斷點並確認'bar'有一個值嗎? – JNevill

回答

1

Case is a reserved word and TypeName is a VBA Function.這使得他們選擇不當的數據庫對象名稱。

如果您不能重命名它們,請在SQL語句中包含這些名稱,以便數據庫引擎將它們識別爲對象名稱。

SQLCommand = "Update [Case] SET Status = 1 WHERE [TypeName] = '" & TypeName & "';"